如何使用GitHub Actions对构建工件进行版本控制?

时间:2019-01-22 14:06:45

标签: github automation versioning continuous-delivery github-actions

我的用例是我希望每个构建/运行的工件都有唯一的版本号。在使用诸如CircleCI,Travis等当前工具的情况下,有可用的内部版本号,它基本上是一个总是递增的计数器。因此,我可以创建类似0.1.0-27的版本字符串。即使是相同的提交,每次也会增加此计数器。

如何使用GitHub Actions做类似的事情? Github操作仅提供GITHUB_SHA和GITHUB_REF。

4 个答案:

答案 0 :(得分:7)

GitHub Actions现在在github上下文中具有用于运行/构建的唯一编号和ID。

github.run_id :存储库中每次运行的唯一编号。如果您重新运行工作流运行,此数字不会更改。

github.run_number :存储库中特定工作流程的每次运行的唯一编号。对于工作流程的第一次运行,此数字从1开始,并在每次新运行时递增。如果您重新运行工作流运行,此数字不会更改。

ref:https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context

您可以在这样的工作流程中引用它们:

      - name: Output Run ID
        run: echo ${{ github.run_id }}
      - name: Output Run Number
        run: echo ${{ github.run_number }}

答案 1 :(得分:5)

我遇到了同样的问题,并且刚刚创建了一个操作来生成顺序的内部版本号。像这样使用

- uses: einaregilsson/build-number@v1
  with:
    token: ${{secrets.github_token}}

此后,您将有一个BUILD_NUMBER环境变量。在https://github.com/einaregilsson/build-number/

上了解有关将相同内部编号用于不同作业的更多信息。

答案 2 :(得分:0)

如果您想要一个恒定的整数增量(1,2,3,4,5),我在文档中没有找到可以用作此类增量的东西,它知道该特定操作运行了多少次。我可以想到两种解决方案:

  1. 在存储库上保持状态:例如,使用count.build文件使用工作流ID,并在构建时对其进行递增。这是我最不喜欢的两种解决方案,因为它增加了其他复杂性,例如它本身会触发推送事件。您可以将此文件存储在S3等其他地方或Gist中。

  2. 使用日期:如果您不担心整数增量上的序列,则可以使用当前数据和时间,例如0.1.0-201903031310代表今天的13 :10。

无论您是否具有Actions Beta Access,我都一定会将其反馈给GitHub。

希望有帮助。

答案 3 :(得分:0)

您可以使用GitVersion从Git中的标签生成增量版本。 https://github.com/GitTools/GitVersion/pull/1787上的PR有一些细节,但是基本上您可以定义此作业:

- uses: actions/checkout@v1
    - name: Get Git Version
      uses: docker://gittools/gitversion:5.0.2-beta1-34-linux-debian-9-netcoreapp2.1
      with:
        args: /github/workspace /nofetch /exec /bin/sh /execargs "-c \"echo $GitVersion_MajorMinorPatch > /github/workspace/version.txt\""