GitHub Action を commit hash で管理する
概要
dependabot を利用して、GitHub Action の更新などをおこなっているわけですが、reviewdog/action-setup@v1 がサプライチェーン攻撃を受けた話などもあり対応作業したメモです。
作業内容
GitHub Action のバージョンを指定する際は、タグではなく、commit hash を利用することが推奨されています(知らなかった)。
なぜかというと、タグは commit hash へのポインタみたいなもので、タグをずらすことによって、意図していないバージョン(commit)のコードが利用される可能性があるから、ということらしい。commit hash を利用していれば、少なくとも、自分が指定したものが知らない間にずらされる心配はない。(もちろん、指定したものがすでにダメである場合はもうどうしようもないが)
色々実験してみた結果、バージョン指定が commit hash であれば、dependabot は commit hash を指定して PR を作ってくれるようだ。なので、いまタグで v1.2.3 のように指定されているものを commit hash にさえ置き換えておけば、次回からは問題なくなる。もしくは dependabot でなく renovate を利用すると、commit hash でやってくれるらしい。
個人的な用途だと renovate を使うまでもないので、今あるタグを commit hash に直すことにする。shunsuke_suzuki=san が pinact というタグを commit hash に置き換えるありがたいツールを作って下さっているのでこれを使う。
リポジトリのトップで以下のようにすれば事足りた:
go run github.com/suzuki-shunsuke/pinact/cmd/pinact@latest run
これで置き換えられる。次回から dependabot は commit hash で PR を作ってくれるので、後はこれまで通りに運用すればよさそう。
Happy hacking!
Discussion