【问题标题】:Bump Python package version upon main branch merge在主分支合并时增加 Python 包版本
【发布时间】:2022-02-09 15:07:59
【问题描述】:
我的问题
我正在开发一个 Python 包,供我公司的几个内部消费者使用他们的 CI/CD 管道使用。因此,让他们知道软件包的最新版本是很重要的,这样他们就可以在它被更改时安装它。该包使用经典的PEP 440 SemVer structure,所以我通常只是更新次要号码。
我正在使用 Git 和 GitHub,因此对主分支的每次新提交都意味着一个新版本。我目前正在手动更新版本,这容易出错且乏味。我正在寻找一种在将 PR 合并到主分支时自动提升次要版本的方法。
我尝试了什么
我的问题
如何在 PR 合并到 repo 的主分支时自动调整 Python 包的次要版本?
【问题讨论】:
-
看看github actions。它们让您定义一个触发器(即“每次推送到 master”)和您想要采取的操作,例如调用 bump2version 并提交/推送该更改。
标签:
python
git
github
version
semantic-versioning
【解决方案1】:
感谢 @VonC 提供优雅的解决方案 - 效果很好 :-)
(与@AdamMatan 在同一开发团队中)
我们认为有必要进行一项调整:
on:
push:
branches:
- master
paths-ignore:
- version.md
没有这个(或等效的“动作过滤器”) - 这个动作将永远在“github fork 炸弹”中自我触发:-)
【解决方案2】:
您可以将bump2version-action 添加到您的GitHub 存储库中,而不是在本地使用bump2version,它指出:
每次您将某些内容合并到主分支时,您都会收到一个额外的直接提交给 main,它会增加 version.md 中的版本。
例子:
name: Bump version workflow
on:
push:
branches:
- main
paths-ignore:
- version.md
jobs:
bump-version:
name: Bump package version
if: "!contains(github.event.head_commit.message, 'Bump version')"
runs-on: ubuntu-20.04
steps:
- name: actions/checkout
uses: actions/checkout@v2
with:
persist-credentials: false
- name: current_version
run: echo "current_version=$(grep '# version' version.md | cut -d ' ' -f3)" >> $GITHUB_ENV
- name: FragileTech/bump-version
uses: FragileTech/bump-version@main
with:
current_version: "${{ env.current_version }}"
files: version.md
commit_name: Your Company Bot
commit_email: bot@your-company.com
login: your-bot-login
token: "${{ secrets.BOT_TOKEN }}"