Sri*_*Sri 7 versioning github pull-request semantic-versioning github-actions
目前,我正在尝试使用 GitHub Actions 将应用程序的凹凸版本自动化,作为 PR 合并的一部分。有一个自定义脚本可以识别应用程序的当前版本和 PR 附带的标签,并在存储版本号的文件上相应地更改主要|次要|补丁版本。重要的是,版本碰撞仅在合并 PR 时发生,并且作为 GitHub Actions 的一部分,因为它有助于避免版本文件中的合并冲突,并消除了手动碰撞版本的方式。
下面给出了 GitHub Actions 代码片段。
jobs:
release:
# Skip on Pull Request Close event.
if: "!(github.event_name == 'pull_request' && !github.event.pull_request.merged)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
- id: bumpversion
if: github.event.pull_request.merged
env:
PR_LABELS: ${{ toJson(github.event.pull_request.labels) }}
run: bash .github/scripts/bump_version.sh -l "${PR_LABELS}"
Run Code Online (Sandbox Code Playgroud)
该bump_version.sh
脚本具有下面给出的函数,该函数可以进行版本更改,然后将其推送到分支main
。
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
echo "commiting the version bump changes..."
git add .
git commit -m "Bump Version v${current_version} -> v${incremented_version}"
echo "pushing the version bump changes..."
git push origin dev
Run Code Online (Sandbox Code Playgroud)
这运行良好,但问题是main
当 PR 合并到分支时,它会在分支上进行 2 次提交。有一个 CI/CD 管道侦听此main
分支的更改,并在有新提交时触发它。由于此 PR 合并进行了 2 次提交,因此它被触发两次。
问题:是否可以通过 GitHub Actions 更新文件作为合并的一部分,而无需创建第二次提交?有没有其他方法可以解决此问题,帮助我在 PR 合并过程中提升版本?
小智 0
我的直接想法是,您可以更改 CI/CD 中的触发器(“on:”)以忽略 2 个提交中的第一个,并仅在第二个提交上运行 CI/CD。
您可以通过多种方法来做到这一点,利用提交附带的任何元数据。这是一个利用标签的想法。您可能必须重构定义incremented_version 的代码,但在bash 中应该不难做到。
这是一个 CI/CD,它将忽略标记为 *.0.0 的内容,但会触发 *.1 或 *.0.1 之类的内容:
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- !v*.0.0
- !v*.0 # Do not push events to tags v1.0.0, v1.0, v2.0.0, and v2.0, etc.
Run Code Online (Sandbox Code Playgroud)
就我个人而言,我喜欢让 2 个提交中的第一个有一个额外的 .0 并忽略它们的想法。看起来更干净。配置 bash 脚本来执行此操作后:
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- !v*.0.0 # Do not push events to tags v1.0.0, v2.0.0, etc.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2326 次 |
最近记录: |