在主分支合并时增加 Python 包版本

Bump Python package version upon main branch merge

我的问题

我正在开发一个 Python 包,供我公司的几个内部消费者使用他们的 CI/CD 管道使用。因此,了解软件包的最新版本对他们来说很重要,这样他们才能在更改后安装它。包里用的是经典的PEP 440 SemVer structure,所以我一般只更新小号

我正在使用 Git 和 GitHub,所以每次对主分支的新提交都意味着一个新版本。我目前是手动更新版本,容易出错且繁琐。每当我将 PR 合并到主分支时,我正在寻找一种自动提升次要版本的方法。

我尝试了什么

我的问题

如何在 PR 合并到 repo 的主分支后自动增加 Python 包的次要版本?

您可以将 bump2version-action 添加到您的 GitHub 存储库,而不是在本地使用 bump2version,其中指出:

Every time you merge something to main branch, you'll receive an additional direct commit to main that increments the version in 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 }}"

感谢@VonC 提供优雅的解决方案 - 它工作得很好:-)

(与@AdamMatan 在同一个开发团队)

我们发现有必要进行一项调整:

    on:
      push:
        branches:
        - master
        paths-ignore:
        - version.md

如果没有这个(或等效的“动作过滤器”)——这个动作将在“github 分叉炸弹”中永久自我触发:-)