如何触发指定的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
相关产品推荐
相关产品推荐

