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

GitHub Actions中workflow_run未触发:关联工作流问题排查求助

GitHub Actions工作流触发问题排查与解决

以下是针对第一个工作流完成后第二个未触发的排查点和解决方法:

1. 核对第二个工作流的workflow_run配置

确保第二个工作流的配置完全匹配第一个工作流的名称,同时明确指定触发类型为completed:

on:
  workflow_run:
    workflows: ["Terraform Staging Destroy"] # 必须和第一个工作流名称完全一致,包括大小写、空格
    types:
      - completed # 必须指定该类型,否则不会触发

2. 确认第一个工作流的运行状态

workflow_run仅在第一个工作流进入completed状态时触发,如果第一个工作流被取消、跳过或者中途失败终止(未走到completed状态),都不会触发第二个工作流。可以在GitHub仓库的「Actions」页面查看第一个工作流的最终状态。

3. 配置第一个工作流的权限

第一个工作流需要具备actions: write权限才能触发后续工作流,在第一个工作流中添加权限配置:

permissions:
  actions: write # 必须配置该权限,否则无法触发其他工作流
  contents: read # 根据实际需求添加其他必要权限

4. 匹配分支过滤规则

如果第二个工作流有分支限制,要确保和第一个工作流的运行分支一致。比如第一个工作流仅在staging分支运行,第二个工作流可以添加分支过滤:

on:
  workflow_run:
    workflows: ["Terraform Staging Destroy"]
    types:
      - completed
    branches: ["staging"] # 限定仅当第一个工作流在staging分支运行时触发

另外,PR关闭触发的第一个工作流,要确认PR的目标分支是staging,否则分支不匹配也会导致第二个工作流不触发。

完整配置示例

第一个工作流(Terraform Staging Destroy)

name: "Terraform Staging Destroy"
on:
  push:
    branches: ["staging"]
  pull_request:
    branches: ["staging"]
    types: ["closed"]

permissions:
  actions: write
  contents: read

jobs:
  destroy-job:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      - name: 执行测试
        run: echo "运行测试用例..."
      - name: 休眠120秒
        run: sleep 120

第二个工作流(Terraform Staging Apply)

name: "Terraform Staging Apply"
on:
  workflow_run:
    workflows: ["Terraform Staging Destroy"]
    types:
      - completed
    branches: ["staging"]

jobs:
  apply-job:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      - name: 执行Terraform Apply
        run: echo "执行Terraform部署..."

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:26:07