Github-actions botからのcommitで別のjobをトリガーしたい(解決策: Github Apps)

2025/02/28に公開

やりたいこと

あるPRがmainにmergeされた時に、autoupdate が適用されるブランチのPRのworkflowをトリガーしたい。
autoupdateはPRのブランチを最新に自動更新するGitHub Actionで、変更がmainブランチにマージされると、自動でマージ先がmainのプルリクエストのブランチが更新(mainの取り込み)される。

下記の画像はautoupdateが実行された時に、対象のPRの特定のworkflow(check-labels)がトリガーされず、Expectedのままの状態。

原因

https://scrapbox.io/ohbarye/secrets.GITHUB_TOKENを使用したworkflowは別のworkflowをトリガーしない
上記の記事で解説されているように、
${{ secrets.GITHUB_TOKEN }}を使用してworkflow内でタスクを実行する場合、別のワークフロー実行はトリガーされない。
予想外の再帰的なワークフローの実行が生じないようにするためらしい。

解決策

・Github tokenではなくgithub appsを使って認証をする <- こっちを選択
・personal access tokenを発行してセットする

Github Apps導入

appsの設定に関しては、下記記事通りに進めた。
https://zenn.dev/farstep/articles/32751d92dd1452#トークンによる認証

Repository permissionsの部分のみ補足。今回はGIthub Appsを使用して、他のブランチへのautoupdateを実行、別のワークフローをトリガーさせる、の2点を実行したいので、下記に”Read and Write”の権限を付与。「Metadata」に関してはデフォルトで"Read-only"。

詰まった部分

autoupdateから別のワークフローを呼び出せるかなと模索し、時間を費やしたが、そもそもGITHUB_TOKENが別のワークフローを呼び出す権限がないことを考えるべきだった。

参考記事

Discussion