我的用例是我希望每个构建/运行的工件都有唯一的版本号。在使用诸如CircleCI,Travis等当前工具的情况下,有可用的内部版本号,它基本上是一个总是递增的计数器。因此,我可以创建类似0.1.0-27
的版本字符串。即使是相同的提交,每次也会增加此计数器。
如何使用GitHub Actions做类似的事情? Github操作仅提供GITHUB_SHA和GITHUB_REF。
答案 0 :(得分:7)
GitHub Actions现在在github
上下文中具有用于运行/构建的唯一编号和ID。
github.run_id :存储库中每次运行的唯一编号。如果您重新运行工作流运行,此数字不会更改。
github.run_number :存储库中特定工作流程的每次运行的唯一编号。对于工作流程的第一次运行,此数字从1开始,并在每次新运行时递增。如果您重新运行工作流运行,此数字不会更改。
您可以在这样的工作流程中引用它们:
- 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),我在文档中没有找到可以用作此类增量的东西,它知道该特定操作运行了多少次。我可以想到两种解决方案:
在存储库上保持状态:例如,使用count.build
文件使用工作流ID,并在构建时对其进行递增。这是我最不喜欢的两种解决方案,因为它增加了其他复杂性,例如它本身会触发推送事件。您可以将此文件存储在S3等其他地方或Gist中。
使用日期:如果您不担心整数增量上的序列,则可以使用当前数据和时间,例如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\""