Github Actions:如何在标签推送且前置工作流成功时触发Release?
解决GitHub Actions拆分流水线后标签推送无法触发Release的问题
问题核心:通过workflow_run触发的工作流,其上下文里的github.ref指向仓库默认分支,而非触发上游工作流的标签/分支,导致你当前的Release工作流标签判断逻辑失效。
直接解决方案
修改release.yaml中的if条件,将判断当前工作流的github.ref改为判断上游工作流的触发Ref:
jobs: release: name: Release runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' && startsWith(github.event.workflow_run.ref, 'refs/tags/v') }}
原理说明
当推送标签时:
- CI工作流被标签Ref(如
refs/tags/v1.2.3)触发运行 - Sonar工作流通过
workflow_run监听CI完成后启动,此时github.event.workflow_run.ref会保留CI的触发Ref(即目标标签) - Release工作流检查该Ref是否符合标签规则,同时确认Sonar运行成功,即可正确触发发布流程
可选优化:避免PR触发误启动
如果需要严格限制Release仅在标签推送场景触发,可补充判断上游工作流的触发事件为push(排除PR触发的CI流程):
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' && startsWith(github.event.workflow_run.ref, 'refs/tags/v') }}
内容的提问来源于stack exchange,提问作者rojanu
相关产品推荐
相关产品推荐

