Open8

GitHub Actionsのrepository_dispatchを試す

fujiwofujiwo

リポジトリAのactios wokflow上から、リポジトリBのactions workflowをキックしたい。

  • コードrepo
  • manifest repo
    が2つ存在したときに、コードrepoのなんらかのイベントを元に、manifest repoを更新してデプロイを走らせることが目的
fujiwofujiwo

📝 最低限動作する設定

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}}'
fujiwofujiwo

workflow_dispatchも同じような事ができそう

主な違い
repository_dispatch

  • 複数のワークフローをトリガーできる
    • event A を持つ全てのワークフローを起動するみたいなことができるかも?
  • デフォルトブランチのワークフローのみ実行可能
    https://github.com/orgs/community/discussions/24657
  • GUIからの手動実行不可
  • イベントタイプを使って実行を制御可能

workflow_dispatch

  • 単一のワークフローのみトリガー可能
  • 任意のブランチのワークフローを実行可能
  • GUIからの手動実行が可能
  • 入力パラメータを受け取れる
fujiwofujiwo

📝 repository_dispatch の検証する時はデフォルトブランチにマージする必要がある。
それを回避するために on に別の条件を一旦指定しておくのも可