Open16

gitHubActionsでホストリポでの変更を検知してプルリク作成

akidon0000akidon0000

labelをホストリポジトリで管理して、変更があれば参照してる他のリポジトリたちも変更されるようにしてるけど、そうなると
pull_request_templateとか
labelerとか
こいつらもそうしたくなってきた、、、
gitHubActionsでホストリポでの変更を検知してプルリク作成ってどうするんや、できるんか調べてみる

akidon0000akidon0000

https://zenn.dev/silverbirder/articles/1d27b51f36493e

今回紹介する仕組みの核となるのが GitHub Actionsのrepository-dispatch トリガーです。
このトリガーは、GitHub APIを経由して、GitHub Actionsのワークフローを起動することができます。そのため、次のように 異なるリポジトリでのGitHub Actionsワークフローを連携できます。

ほーん なるほど

akidon0000akidon0000

うーん
ホストリポで新規作成したリポに対してのコードを書かないといけないのか

akidon0000akidon0000

https://zenn.dev/tak_iwamoto/articles/c4e8677f2a50af

新規追加するリポが増えるたびに追加していかないといけない
不便だ

更新元のリポジトリ 1のGitHub Actionsは以下の通りです。

name: dispatch target file updated
on:
  push:
    branches:
      - main
    paths:
      - 'target.yml'
jobs:
  dispatch-target-updated:
    strategy:
      matrix:
        repo: ['organization/repository2']
    name: dispatch-target-updated
    runs-on: ubuntu-latest
    steps:
      - name: dispatch target-updated
        uses: peter-evans/repository-dispatch@v1
        with:
          token: ${{ secrets.GITHUB_ACCESS_TOKEN }}
          repository: ${{ matrix.repo }}
          event-type: target-updated
akidon0000akidon0000

別にリアルタイムで同期が必要なわけじゃないので、週1回の更新で十分すぎるし、必要なリポでは手動で回せばいいので、トリガーはスケジュールにする

akidon0000akidon0000

ワークフローを書き換えるプルリクを作成するには権限が必要そうだ
簡単に実装できる方法としては、PATがあるが、
それぞれのリポジトリのシークレットに登録する必要があるので極力使用したくない

akidon0000akidon0000

GitHubAppsも各リポジトリにそれぞれセキュリティキーが必要だ
面倒なので、workflowsは対象外にした設計にする