Breathnote
Dependabotが作るプルリクで、GitHub ActionsのGITHUB_TOKENが読み込めない

Dependabotが作るプルリクで、GitHub ActionsのGITHUB_TOKENが読み込めない

最近(と言っても2か月前の話ですが)、GITHUB_TOKENのパーミッションが変更され、Dependabotが作ったプルリクエストでGITHUB_TOKENが読み込めなくなりました。

これの何が困るかというと、「自動テストの中に外部APIを叩くステップがあり、接続のためのトークンをGITHUB_TOKENから読み込んでいる」といったテストが失敗するようになったのです。まあ、この例ではAPIのモックを作れば済む話ですが、今回はこれを何とかします。

※ 追記(2022年4月9日)

こちらの記事(上記の参考記事②と同じ)の追記にあるとおり、GITHUB_TOKENのパーミッションを指定できるようになりました。Dependabotもこれに従うようですので、本記事の問題も回避できます。

対処法

パーミッションが変更されたのは、Dependabotがトリガーをセットしたワークフローのみ。同じワークフローを自分でre-runすると、問題なくGITHUB_TOKENを読み込めました。

プルリクエストを作ったときに実行されるワークフローがread-only権限になる。
上記ワークフローをre-runするとwriteパーミッションがついて実行される。
@dependabot mergeでマージした場合、pushイベントでトリガーされたワークフローもread-onlyになる。
re-runするとwriteパーミッションがつく。
意図したものなのかは不明。

最後の一文が怖いですが、現時点 (2021/05/11) ではこの対処法で乗り切っています。