如何使用 GitHub 操作对构建工件进行版本控制?
How to version build artifacts using GitHub Actions?
我的用例是我希望每个 build/run 的工件都有一个唯一的版本号。使用当前的工具,如 CircleCI、Travis 等,有一个可用的内部版本号,它基本上是一个始终上升的计数器。所以,我可以创建像 0.1.0-27
这样的版本字符串。即使对于相同的提交,此计数器也会每次增加。
如何使用 GitHub 操作执行类似的操作? Github 行动仅提供 GITHUB_SHA 和 GITHUB_REF。
如果你想要一个恒定的整数增量 (1,2,3,4,5),我在文档中没有找到任何你可以使用的增量,它知道特定操作的次数运行。我能想到两种解决方案:
在 repo 上维护状态:例如,使用使用工作流 ID 的 count.build
文件并在构建时递增它。这是我最不喜欢的两个解决方案,因为它增加了其他复杂性,比如它本身会触发推送事件。您可以将此文件存储在其他地方,例如 S3 或 Gist。
使用日期:如果您不担心整数增量的顺序,您可以只使用当前日期和时间,例如0.1.0-201903031310
今天在 13:10。
无论您是否拥有 Actions Beta 访问权限,我一定会反馈给 GitHub。
希望对您有所帮助。
您可以使用 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\""
我遇到了同样的问题,并且刚刚创建了一个操作来生成连续的内部版本号。像
一样使用
- uses: einaregilsson/build-number@v1
with:
token: ${{secrets.github_token}}
在此之后的步骤中,您将拥有一个 BUILD_NUMBER
环境变量。在 https://github.com/einaregilsson/build-number/
上查看有关为不同作业使用相同内部版本号等的更多信息
更新:现在 GitHub 操作中内置了一个 $GITHUB_RUN_NUMBER
变量,因此不再需要这种方法。
GitHub Actions 现在在 github
上下文中具有 run/build 的唯一编号和 ID。
github.run_id : A unique number for each workflow run within a repository. This number does not change if you re-run the workflow run.
github.run_number : 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. This number does not change if you re-run the workflow run.
github.run_attempt : A unique number for each attempt of a particular workflow run in a repository. This number begins at 1 for the workflow run's first attempt, and increments with each re-run.
您可以在这样的工作流程中引用它们:
- name: Output Run ID
run: echo ${{ github.run_id }}
- name: Output Run Number
run: echo ${{ github.run_number }}
- name: Output Run Attempt
run: echo ${{ github.run_attempt }}
我的用例是我希望每个 build/run 的工件都有一个唯一的版本号。使用当前的工具,如 CircleCI、Travis 等,有一个可用的内部版本号,它基本上是一个始终上升的计数器。所以,我可以创建像 0.1.0-27
这样的版本字符串。即使对于相同的提交,此计数器也会每次增加。
如何使用 GitHub 操作执行类似的操作? Github 行动仅提供 GITHUB_SHA 和 GITHUB_REF。
如果你想要一个恒定的整数增量 (1,2,3,4,5),我在文档中没有找到任何你可以使用的增量,它知道特定操作的次数运行。我能想到两种解决方案:
在 repo 上维护状态:例如,使用使用工作流 ID 的
count.build
文件并在构建时递增它。这是我最不喜欢的两个解决方案,因为它增加了其他复杂性,比如它本身会触发推送事件。您可以将此文件存储在其他地方,例如 S3 或 Gist。使用日期:如果您不担心整数增量的顺序,您可以只使用当前日期和时间,例如
0.1.0-201903031310
今天在 13:10。
无论您是否拥有 Actions Beta 访问权限,我一定会反馈给 GitHub。
希望对您有所帮助。
您可以使用 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\""
我遇到了同样的问题,并且刚刚创建了一个操作来生成连续的内部版本号。像
一样使用- uses: einaregilsson/build-number@v1
with:
token: ${{secrets.github_token}}
在此之后的步骤中,您将拥有一个 BUILD_NUMBER
环境变量。在 https://github.com/einaregilsson/build-number/
更新:现在 GitHub 操作中内置了一个 $GITHUB_RUN_NUMBER
变量,因此不再需要这种方法。
GitHub Actions 现在在 github
上下文中具有 run/build 的唯一编号和 ID。
github.run_id : A unique number for each workflow run within a repository. This number does not change if you re-run the workflow run.
github.run_number : 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. This number does not change if you re-run the workflow run.
github.run_attempt : A unique number for each attempt of a particular workflow run in a repository. This number begins at 1 for the workflow run's first attempt, and increments with each re-run.
您可以在这样的工作流程中引用它们:
- name: Output Run ID
run: echo ${{ github.run_id }}
- name: Output Run Number
run: echo ${{ github.run_number }}
- name: Output Run Attempt
run: echo ${{ github.run_attempt }}