无需第三方Actions的GitHub Action main分支版本自增循环问题
解决原生GitHub Action版本递增循环触发问题
问题根本原因
你配置的tags-ignore规则未生效是因为该规则仅作用于tag推送事件,而你的工作流触发条件是main分支的代码推送,tag过滤规则对分支代码推送事件完全不生效,所以版本提交推送到main分支时会再次触发工作流,形成循环。
最优无if解决方案
直接使用GitHub Actions原生支持的提交跳过标识即可,无需添加任何if判断、无需修改工作流触发规则:
GitHub原生识别提交信息中的
[skip ci]/[ci skip]标识,携带该标识的提交推送后不会触发任何工作流运行。
你只需要修改npm version的提交信息参数,给自动生成的版本提交添加跳过标识即可,同时可以删掉冗余的手动打标签步骤(npm version执行时会自动创建对应版本号的Git标签)。
修改后的完整工作流配置
name: Version Increment on: push: branches: - main tags-ignore: - v* jobs: version: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: token: ${{ secrets.ACCESS_TOKEN }} - run: git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - run: git config user.name "$GITHUB_ACTOR" # 修改提交信息添加[skip ci],避免触发循环 - run: npm version minor -m "v%s [skip ci]" - run: git push origin --tags - run: git push origin --follow-tags
方案优势
- 完全原生实现,无需依赖任何第三方Action
- 无需添加任何if判断逻辑,符合你的需求
- 规则由GitHub官方原生支持,无兼容问题
- 同时保留了原工作流的所有功能,改动量极小
内容的提问来源于stack exchange,提问作者MarTic
相关产品推荐
相关产品推荐

