You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:36:34