Github Actions中的repository_dispatch和workflow_dispatch有什么区别?

23
请用一些真实的例子来解释这两种事件触发器的区别。

两者都允许手动触发工作流程。要在存储库中触发特定的工作流程(例如测试、备份、体验等),请使用“workflow_dispatch”事件。要在存储库中触发多个工作流程(例如,基于另一个存储库事件)并创建自定义事件(基于github上下文中不存在但在其他地方(ci/cd、脚本等)创建的特定输入和事件类型,请使用“repository_dispatch”事件。 - GuiFalourd
1个回答

11

显然,repository_dispatch事件只能在默认分支上读取

参见:

关于后者,来自William Villeneuve的说法:

# TODO: replace :token, :user, and :repo
curl -H "Authorization: token :token" \
    -H 'Accept: application/vnd.github.everest-preview+json' \
    "https://api.github.com/repos/:user/:repo/dispatches" \
    -d '{"event_type": "awesomeness", "client_payload": {"foo": "bar"}}'

name: example-client-payload-action
on: repository_dispatch
jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - run: 'echo "field: ${{ github.event.client_payload.foo }}"'
      - run: 'echo "payload: ${{ toJson(github.event.client_payload) }}"'
      - run: echo baz
        if: github.event.action == 'baz'

此处所示

在此发布,因为它似乎没有被记录——您还可以指定要触发的类型列表:

on:
  repository_dispatch:
    types:
      - manual-trigger-mytest
      - manual-trigger-all

来自 "手动触发 GitHub Actions 工作流"


1
对于 workflow_dispatch,也是:"只有当工作流文件在默认分支上时,此事件才会触发工作流运行。" https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch - Michael Freidgeim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接