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

GitHub Actions中能否等待其他仓库工作流完成后再触发当前工作流?

GitHub Actions跨仓库依赖触发实现方案

完全可以实现该需求,核心逻辑是监听test、core两个仓库的工作流成功状态,确认二者均成功后触发actual仓库的工作流,以下是可直接落地的实现步骤:

前置准备

  • 生成一个具有repo全权限的个人访问令牌(PAT),将该令牌存入test、core、actual三个仓库的Actions Secrets中,命名为DEPLOY_PAT

步骤1:配置test、core仓库的工作流上报逻辑

在test、core两个仓库的工作流末尾添加状态上报步骤,工作流执行成功时会主动通知actual仓库:

# 仅工作流整体执行成功时运行该步骤
- name: 上报成功状态到actual仓库
  if: ${{ success() }}
  run: |
    curl -L \
      -X POST \
      -H "Accept: application/vnd.github+json" \
      -H "Authorization: Bearer ${{ secrets.DEPLOY_PAT }}" \
      https://api.github.com/repos/替换为你的GitHub用户名/actual/dispatches \
      -d '{"event_type":"pre-workflow-finish","client_payload":{"repo":"test","commit_sha":"${{ github.sha }}"}}'

注意:core仓库的上报步骤需要把client_payload里的repo值改成core

步骤2:配置actual仓库的校验触发逻辑

在actual仓库中创建新的工作流文件,每次收到test或core的上报通知时,自动校验两个前置仓库的工作流状态,均成功时执行对应任务:

name: 前置工作流校验&任务执行
on:
  repository_dispatch:
    types: [pre-workflow-finish]

jobs:
  check-and-trigger:
    runs-on: ubuntu-latest
    steps:
      - name: 校验test和core工作流状态
        id: check
        run: |
          # 获取当前触发的提交SHA,确保校验的是同一次代码变更对应的工作流
          TARGET_SHA=${{ github.event.client_payload.commit_sha }}
          # 查询test仓库对应SHA的工作流状态
          TEST_RES=$(curl -L -H "Authorization: Bearer ${{ secrets.DEPLOY_PAT }}" "https://api.github.com/repos/替换为你的GitHub用户名/test/actions/runs?head_sha=$TARGET_SHA&status=completed" | jq -r '.workflow_runs[0].conclusion')
          # 查询core仓库对应SHA的工作流状态
          CORE_RES=$(curl -L -H "Authorization: Bearer ${{ secrets.DEPLOY_PAT }}" "https://api.github.com/repos/替换为你的GitHub用户名/core/actions/runs?head_sha=$TARGET_SHA&status=completed" | jq -r '.workflow_runs[0].conclusion')
          
          if [ "$TEST_RES" = "success" ] && [ "$CORE_RES" = "success" ]; then
            echo "pass=true" >> $GITHUB_OUTPUT
          fi
      - name: 执行actual仓库对应工作流任务
        if: steps.check.outputs.pass == 'true'
        run: |
          # 此处替换为你需要执行的actual仓库的业务逻辑
          echo "test、core工作流均执行成功,开始运行当前任务"

可选优化点

  • 如果不需要严格匹配同一次提交的工作流,可以去掉提交SHA的校验逻辑,直接校验两个仓库最近一次完成的工作流状态即可
  • 可以添加失败告警逻辑,当其中任意一个前置工作流失败时发送通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:15:05