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

如何触发指定的GitHub Repository Dispatch工作流?

解决指定触发GitHub Actions工作流的问题

核心问题原因

你当前的配置是在工作流的步骤里加判断条件,这时候两个工作流已经被触发启动了,只是不符合条件的步骤会被跳过,而不是直接不触发工作流。要实现指定触发,得把判断逻辑移到工作流的触发规则里。

两种可行方案

方案一:通过client_payload在触发阶段过滤

修改两个工作流的on字段,加入条件判断,让只有匹配payload的工作流才会被触发:

test1.yml 配置

on:
  repository_dispatch:
    condition: ${{ github.event.client_payload.workflow_file == 'test1.yml' }}

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check User
        run: echo "执行test1工作流"

test2.yml 配置

on:
  repository_dispatch:
    condition: ${{ github.event.client_payload.workflow_file == 'test2.yml' }}

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check User
        run: echo "执行test2工作流"

POST请求可以保持你原来的内容不变,发送时只有匹配对应workflow_file的工作流会启动。

方案二:用event_type直接区分(更简洁)

把POST请求的event_type设为不同值,工作流直接监听对应的event_type:

test1.yml 配置

on:
  repository_dispatch:
    types: [test1]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check User
        run: echo "执行test1工作流"

test2.yml 配置

on:
  repository_dispatch:
    types: [test2]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check User
        run: echo "执行test2工作流"

对应的POST请求修改为:

触发test1的请求
{
  "event_type": "test1",
  "client_payload": {
    "workflow_file": "test1.yml"
  }
}
触发test2的请求
{
  "event_type": "test2",
  "client_payload": {
    "workflow_file": "test2.yml"
  }
}

验证效果

修改完配置后,发送对应POST请求,只会触发目标工作流,另一个不会被启动,完美解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:23:10