GitHub Actions:新标签推送后unittest成功但publish未触发的问题
问题分析与解决方案
问题根源
你当前的publish.yml配置里,branches: 'releases/**'只针对分支推送触发的Unittest工作流进行匹配,而标签推送触发的Unittest不会被这个分支规则命中,因此Publish工作流无法被触发。同时,你还需要明确限定仅当Unittest执行成功且触发源是标签推送时,才启动发布流程。
修改后的配置
1. 确保unittest.yml能被标签推送触发(可选,原配置已支持,但可明确化)
# unittest.yml name: Unittest on: push: # 匹配所有分支和标签 branches: ['*'] tags: ['*'] pull_request: branches: ['*'] jobs: unit-test: runs-on: ubuntu-latest steps: ...
2. 修正publish.yml的触发规则与条件
# publish.yml name: Publish on: workflow_run: workflows: [Unittest] types: [completed] # 匹配所有标签,可根据需求修改为特定规则(比如 'v*' 匹配版本标签) tags: ['*'] jobs: publish-image: runs-on: ubuntu-latest # 双重条件:Unittest执行成功,且触发Unittest的是标签推送事件 if: >- ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' && startsWith(github.event.workflow_run.head_branch, 'refs/tags/') }} steps: ...
关键说明
- 将原
branches过滤替换为tags,确保仅关注标签推送触发的Unittest工作流; - 通过
if条件进一步校验:github.event.workflow_run.conclusion == 'success':确保Unittest执行成功;github.event.workflow_run.event == 'push':限定触发源是推送事件(标签推送属于push事件);startsWith(github.event.workflow_run.head_branch, 'refs/tags/'):明确判断触发Unittest的是标签(标签对应的head_branch格式为refs/tags/<标签名>)。
内容的提问来源于stack exchange,提问作者Bloodbee
相关产品推荐
相关产品推荐

