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

如何在仓库1合并至master分支时触发仓库2的GitHub CI工作流

不能直接在on.push.branches字段里配置其他仓库的分支实现跨仓库触发,这个配置项仅监听当前仓库内的分支推送事件,对其他仓库产生的事件完全不生效。

要实现仓库1合并代码到master时自动触发仓库2的CI,用「仓库2开放工作流调用入口 + 仓库1合并时主动发起调用」的方案即可,你现有的仓库2配置已经满足基础要求,只需要补少量配置:

配置步骤

1. 确认仓库2的基础配置

你仓库2里名为run autotests的工作流已经配置了workflow_dispatch触发项,本身就支持被外部调用,只需要提前完成权限准备:

  • 进入仓库2的设置页,找到Actions > General配置项
  • 下滑到Workflow permissions板块,确保工作流运行权限没有做过度限制
  • 如果两个仓库不在同一账号/组织下,提前准备一个有仓库2工作流操作权限的访问令牌。

2. 在仓库1添加触发工作流

在仓库1的.github/workflows/目录下新建任意名称的yml配置文件,内容参考如下:

name: 触发仓库2自动化测试
on:
  push:
    branches: [master]
  # 如果只需要PR合并到master时触发,注释掉上面的push配置,启用下面的配置
  # pull_request:
  #   branches: [master]
  #   types: [closed]

jobs:
  trigger:
    runs-on: ubuntu-latest
    steps:
      - name: 调用仓库2工作流
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.REPO2_TRIGGER_TOKEN }}
          script: |
            // PR触发时放开下面的注释,避免PR未合并就触发
            // if (context.payload.pull_request && !context.payload.pull_request.merged) return
            await github.rest.actions.createWorkflowDispatch({
              owner: '替换为仓库2的所属账号/组织名',
              repo: '替换为仓库2的仓库名称',
              workflow_id: '替换为仓库2中run autotests对应的yml文件名,比如autotest.yml',
              ref: 'master'
            })

3. 配置访问凭证

  • 生成一个个人访问令牌(PAT):如果仓库2是私有仓库,给令牌勾选repo全权限;如果是公开仓库,勾选public_repo和workflow权限即可
  • 把生成的令牌保存到仓库1的Actions Secrets中,命名为REPO2_TRIGGER_TOKEN,和上面配置里的引用名保持一致
补充说明
  • 如果需要把仓库1的提交ID、触发人等信息传到仓库2的测试流程里,可以在仓库2的workflow_dispatch配置下新增inputs字段定义参数,在仓库1的调用代码里传入对应参数值即可
  • 如果两个仓库同属一个组织,可以直接用组织级别的内置令牌,不用单独生成个人PAT,只要给组织令牌开通跨仓库工作流调用权限就行,安全性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:18:40