他のリポジトリのイベントで GitHub Actions をトリガーする
別のリポジトリのイベントをきっかけとして GitHub Actions の workflow をトリガーするというのをこのブログで設定したのでまとめておく.
このブログのソースコードは以下の2つに分かれている.
- Markdown の文章データを管理するリポジトリ(yaeda/blog-posts)
- サイトのソースコードを管理するリポジトリ(yaeda/yaeda.github.com)
今回,yaeda/blog-posts の方に記事を上げたら,yaeda/yaeda.github.com の方で Build & Deploy を行うようにした.
yaeda/blog-posts 側の設定
以下の yml コードが 「main ブランチの posts ディレクトリの Markdown ファイルに変更があったら yaeda/yaeda.github.com にdeploy
というイベントを投げる」という設定.GitHub Actions の repository_dispatch という機能を使っているが, workflow_dispatch でも同様のことができると思う.どちらも GitHub API 経由で workflow をトリガーする機能で,これを別のリポジトリの workflow の中で利用する.
API を使う部分は peter-evans/repository-dispatch という Action を作ってくれている人がいたので利用している.権限が足りずおなじみの ${{ secrets.GITHUB_TOKEN }}
が使えないので personal access token を用意する必要がある点に注意.詳しくはこちら(token on peter-evans/repository-dispatch).
yaeda/yaeda.github.com の設定
こちらでは deploy
というイベントを受け取って Build & Deploy を行う.以下の例では「 main ブランチへの変更 もしくは deploy
イベント」をトリガーとして publish ジョブが走るようになっている.ジョブの中で yaeda/yaeda.github.com と yaeda/blog-posts の2つのリポジトリを checkout してきて Build & Deploy を行っている.完全なコードはこちら(yaeda.github.com/deploy.yml at main).
所感
ここで紹介した方法は連携する両方のリポジトリに設定が必要なので,自分のリポジトリや所属している組織のリポジトリのような閉じた状況でないと使いづらい.たとえば「React Native の新しいバージョンがリリースされたら更新する PR つくってテストしよう」みたいなのは難しい.そういうときは Renovate とか使いましょう.
最近はもう GitHub Actions しか使ってなくて,機能も十分だと感じている.あまり凝ったことをしてないってものあるけど,便利.他の人の技も盗みたいと思って zenn.dev を検索してみたら同じ内容の記事を見つけた.こちらも参考にできそう.