如何在 Github Actions 中进行版本控制发布

3

有没有一种方法可以使用自定义版本号在 GitHub 上使用 Actions 发布版本?目前,我正在使用 GitHub Context 提供的 github.run_number,正如文档中所述:

github.run_number (string) - A unique number for each run 
of a particular workflow in a repository. This number begins
at 1 for the workflow's first run, and increments with each new run.

并非每次运行我的工作流都会创建一个发布版(例如,当工作流失败时),导致版本号不一致。我已经创建了一个演示存储库,正如您所看到的,发布版本号是...38,39,40,47,49。在GitHub Actions文档中,我没有找到任何解决方法。

我希望有一致递增的版本号,甚至可以采用v.x.x结构,如果可能的话。

我的完整工作流可以在这里找到,我的release-project作业为:

...previous jobs: build, test, deploy...
release-project:
    name: Release project
    needs: deploy-project
    ...
      - name: Create release
        id: create_release_id
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.run_number }}
          release_name: Release ${{ github.run_number }}
      - name: Upload release asset
        id: upload-release-asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release_id.outputs.upload_url }}
          asset_path: ./project.zip
          asset_name: project-v${{ github.run_number }}.zip
          asset_content_type: application/zip
1个回答

4
我建议不要依赖于run_number,而是使用存储库中的最新标记来生成下一个基于其版本。例如,您可以使用 获取最新标记, 下一步SemVers, 和 下一个单调发布版本 GH 操作。

语义化版本控制工作流程:

...

jobs:
  test-next-release:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0 # required for github-action-get-previous-tag

      - name: Get previous tag
        id: previoustag
        uses: 'WyriHaximus/github-action-get-previous-tag@v1'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Get next minor version
        id: semver
        uses: 'WyriHaximus/github-action-next-semvers@v1'
        with:
          version: ${{ steps.previoustag.outputs.tag }}

      - name: Create release
        id: create_release_id
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.semver.outputs.patch }}
          release_name: Release ${{ steps.semver.outputs.patch }}

连续编号版本控制工作流程:

...

jobs:
  test-next-release-custom:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0 # required for github-action-get-previous-tag

      - name: Get Previous tag
        id: previoustag
        uses: 'WyriHaximus/github-action-get-previous-tag@v1'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          
      - name: Get next version
        id: next
        uses: 'WyriHaximus/github-action-next-release-version@1.0.0'
        with:
          version: ${{ steps.previoustag.outputs.tag }}

      - name: Create release
        id: create_release_id
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.next.outputs.version }}
          release_name: Release ${{ steps.next.outputs.version }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接