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

GitHub Actions前序工作流失败仍触发后续工作流原因排查

问题原因

workflow_run的completed触发类型不会校验上游工作流的执行结果:只要被监听的工作流运行终止,不管是成功、失败、被取消还是超时,都会触发下游工作流。你当前的配置只声明了监听Security工作流的完成事件,没有在下游工作流里添加上游运行状态的判断逻辑,自然会出现Security执行失败时Deploy工作流仍然启动的情况。
另外你现有配置还有个隐藏的逻辑错误:workflow_run事件触发时,默认的github.ref指向的是当前仓库的默认分支,而非上游Security工作流实际运行的代码分支,你原来写的分支判断规则在这个触发场景下是不生效的。

修复方式

修改工作流B(Deploy dev og prod)的配置,在对应job的if条件中补充两个校验规则:

  • 上游Security工作流最终执行结果为成功
  • 上游工作流运行的代码分支为dev或master

修改后的工作流B完整配置如下:

name: Deploy dev og prod

on:
  workflow_run:
    workflows: ["Security"]
    types:
      - completed

env:
  IMAGE: ghcr.io/${{ github.repository }}:${{ github.sha }}

jobs:
  deploy-dev-gcp:
    name: Deploy til dev-gcp
    if: ${{ github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.head_branch == 'dev' || github.event.workflow_run.head_branch == 'master') }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: nais/deploy/actions/deploy@v1
        env:
          APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
          CLUSTER: dev-gcp
          RESOURCE: .nais/naiserator.yaml
          VARS: .nais/dev-gcp.json

如果后续给该工作流新增其他需要依赖Security成功结果的job,记得给每个job都加上github.event.workflow_run.conclusion == 'success'的判断条件即可。

内容的提问来源于stack exchange,提问作者user16269092

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:48:15