Open8
GitHub Actionsのrepository_dispatchを試す
リポジトリAのactios wokflow上から、リポジトリBのactions workflowをキックしたい。
- コードrepo
- manifest repo
が2つ存在したときに、コードrepoのなんらかのイベントを元に、manifest repoを更新してデプロイを走らせることが目的
repository_dispatchを設定したgithub repoに対して、APIリクエストを送ることで動作確認できそう
- "Contents" repository permissions (write) を持ったPATが必要そう
📝 最低限動作する設定
name: repository-dispatch-test
on:
repository_dispatch:
types: [on-demand-test]
jobs:
test:
name: test
runs-on: ubuntu-latest
steps:
- name: echo
run: echo ${{ github.event.client_payload }}
curl -L -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer <TOKEN> -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/<org>/<repo>/dispatches -d '{"event_type":"on-demand-test","client_payload":{"unit":false,"integration":true}}'
workflow_dispatchも同じような事ができそう
主な違い
repository_dispatch
- 複数のワークフローをトリガーできる
- event A を持つ全てのワークフローを起動するみたいなことができるかも?
-
デフォルトブランチのワークフローのみ実行可能
https://github.com/orgs/community/discussions/24657 - GUIからの手動実行不可
- イベントタイプを使って実行を制御可能
workflow_dispatch
- 単一のワークフローのみトリガー可能
- 任意のブランチのワークフローを実行可能
- GUIからの手動実行が可能
- 入力パラメータを受け取れる
📝 repository_dispatch の検証する時はデフォルトブランチにマージする必要がある。
それを回避するために on に別の条件を一旦指定しておくのも可