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

如何让私有仓库repo1的Build工作流触发repo2非main分支的Deploy工作流?

解决方案

核心原因

GitHub 的repository_dispatch事件默认仅触发目标仓库默认分支(如main)中的工作流。若要触发非默认分支的工作流,必须在触发请求中明确指定目标分支的ref参数。

具体配置步骤

1. 配置repo2的Deploy工作流

在repo2的目标分支(比如dev)中创建或修改.github/workflows/deploy.yml,确保监听repository_dispatch事件:

name: Deploy
on:
  repository_dispatch:
    types: [trigger-deploy] # 自定义事件类型,需与触发请求中的类型一致

jobs:
  deploy:
    runs-on: self-hosted
    steps:
      - name: Checkout target branch code
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.client_payload.ref }} # 拉取触发请求指定的分支代码

      # 这里添加你的部署步骤

2. 在repo1的Build工作流中添加触发逻辑

在repo1的Build工作流末尾,通过curl发送repository_dispatch请求,必须指定ref参数指向repo2的目标分支:

name: Build
on: [push]

jobs:
  build:
    runs-on: self-hosted
    steps:
      # 这里添加你的构建步骤

      - name: Trigger repo2 Deploy workflow
        if: success() # 仅当构建成功时触发
        run: |
          curl -X POST \
            -H "Authorization: token ${{ secrets.REPO2_DISPATCH_TOKEN }}" \
            -H "Accept: application/vnd.github.v3+json" \
            https://api.github.com/repos/<你的用户名>/repo2/dispatches \
            -d '{
              "event_type": "trigger-deploy",
              "client_payload": {
                "ref": "dev" # 替换为repo2中要触发工作流的分支名
              }
            }'

3. 配置权限令牌

  • 生成一个GitHub个人访问令牌(PAT),需包含repo权限(因涉及私有仓库)。
  • 在repo1的「Settings -> Secrets and variables -> Actions」中添加该令牌,命名为REPO2_DISPATCH_TOKEN。

关键注意事项

  • 确认repo2的目标分支中确实存在.github/workflows/deploy.yml文件,且分支名称拼写无误。
  • 自托管运行器需能正常访问GitHub API,内网环境需确保网络连通性。
  • 触发请求中的event_type必须与repo2工作流中repository_dispatch.types的取值完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:42:06