Dependabotが作るプルリクで、GitHub ActionsのGITHUB_TOKENが読み込めない
最近(と言っても2か月前の話ですが)、GITHUB_TOKEN
のパーミッションが変更され、Dependabotが作ったプルリクエストでGITHUB_TOKEN
が読み込めなくなりました。
これの何が困るかというと、「自動テストの中に外部APIを叩くステップがあり、接続のためのトークンをGITHUB_TOKEN
から読み込んでいる」といったテストが失敗するようになったのです。まあ、この例ではAPIのモックを作れば済む話ですが、今回はこれを何とかします。
- Workflows triggered by Dependabot PRs will run with read-only permissions
- Dependabot が起動する GitHub Actions Workflow から write 権限が無くなった件
※ 追記(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) ではこの対処法で乗り切っています。