TL;DR
- 次のようなコマンドが便利だった。
git ls-remote --tags https://github.com/actions/checkout
- ハッシュ値はマジックナンバーなので、コメントを付記すること。
コミットハッシュを見つける
githubの画面から探そうとしたのですが、なかなか辿り着けない。
しかも一覧性が低く、次のような必要な情報を得られない。
- 何が安定版最新か
- どれだけのバージョンが全体で存在しているか
git ls-remote
というコマンドが便利でした。
例えば、定番のcheckoutのアクションについて見てみましょう。
次のようなコマンドを実行すると、一覧できます。
git ls-remote --tags https://github.com/actions/checkout
af513c7a016048ae468971c52ed77d9562c7c819 refs/tags/1.0.0
544eadc6bf3d226fd7a7a9f0dc5b5bf7ca0675b9 refs/tags/v1
50fbc622fc4ef5163becd7fab6573eac35f8462e refs/tags/v1^{}
af513c7a016048ae468971c52ed77d9562c7c819 refs/tags/v1.0.0
ec3afacf7f605c9fc12c70bc1c9e1708ddb99eca refs/tags/v1.1.0
0b496e91ec7ae4428c3ed2eeb4c3a40df431f2cc refs/tags/v1.1.0^{}
a2ca40438991a1ab62db1b7cad0fd4e36a2ac254 refs/tags/v1.2.0
50fbc622fc4ef5163becd7fab6573eac35f8462e refs/tags/v1.2.0^{}
ee0669bd1cc54295c223e0bb666b733df41de1c5 refs/tags/v2
95784fc5bbede4a44d9abcfbde7a64f16e6dbedd refs/tags/v2-beta
a6747255bd19d7a757dbdda8c654a9f84db19839 refs/tags/v2-beta^{}
722adc63f1aa60a57ec37892e133b1d319cae598 refs/tags/v2.0.0
01aecccf739ca6ff86c0539fbc67a7a5007bbc81 refs/tags/v2.1.0
86f86b36ef15e6570752e7175f451a512eac206b refs/tags/v2.1.1
aabbfeb2ce60b5bd82389903509092c4648a9713 refs/tags/v2.2.0
b4483adec309c0d01a5435c5e24eb40de5773ad9 refs/tags/v2.3.0
28c7f3d2b5162b5ddd3dfd9a45aa55eaf396478b refs/tags/v2.3.1
2036a08e25fa78bbd946711a407b529a0a1204bf refs/tags/v2.3.2
a81bbbf8298c0fa03ea29cdc473d45769f953675 refs/tags/v2.3.3
5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f refs/tags/v2.3.4
1e204e9a9253d643386038d443f96446fa156a97 refs/tags/v2.3.5
ec3a7ce113134d7a93b817d10a8272cb61118579 refs/tags/v2.4.0
f25a3a9f25bd5f4c5d77189cab02ff357b5aedeb refs/tags/v2.4.1
7884fcad6b5d53d10323aee724dc68d8b9096a2e refs/tags/v2.4.2
e2f20e631ae6d7dd3b768f56a5d2af784dd54791 refs/tags/v2.5.0
dc323e67f16fb5f7663d20ff7941f27f5809e9b6 refs/tags/v2.6.0
ee0669bd1cc54295c223e0bb666b733df41de1c5 refs/tags/v2.7.0
f43a0e5ff2bd294095638e18286ca9a3d1956744 refs/tags/v3
a12a3943b4bdde767164f792f33f40b04645d846 refs/tags/v3.0.0
dcd71f646680f2efd8db4afa5ad64fdcba30e748 refs/tags/v3.0.1
2541b1294d2704b0964813337f33b291d3f8596b refs/tags/v3.0.2
93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 refs/tags/v3.1.0
755da8c3cf115ac066823e79a1e1788f8940201b refs/tags/v3.2.0
ac593985615ec2ede58e132d2e21d2b1cbd6127c refs/tags/v3.3.0
24cb9080177205b6e8c946b17badbe402adc938f refs/tags/v3.4.0
8f4b7f84864484a7bf31766abe9204da3cbe65b3 refs/tags/v3.5.0
83b7061638ee4956cf7545a6f7efe594e5ad0247 refs/tags/v3.5.1
8e5e7e5ab8b370d6c329ec480221332ada57f0ab refs/tags/v3.5.2
c85c95e3d7251135ab7dc9ce3241c5835cc595a9 refs/tags/v3.5.3
f43a0e5ff2bd294095638e18286ca9a3d1956744 refs/tags/v3.6.0
34e114876b0b11c390a56381ad16ebd13914f8d5 refs/tags/v4
1e31de5234b9f8995739874a8ce0492dc87873e2 refs/tags/v4.0.0
8ade135a41bc03ea155e62e844d188df1ea18608 refs/tags/v4.1.0
b4ffde65f46336ab88eb53be808477a3936bae11 refs/tags/v4.1.1
9bb56186c3b09b4f86b1c65136769dd318469633 refs/tags/v4.1.2
1d96c772d19495a3b5c517cd2bc0cb401ea0529f refs/tags/v4.1.3
0ad4b8fadaa221de15dcec353f45205ec38ea70b refs/tags/v4.1.4
44c2b7a8a4ea60a981eaca3cf939b5f4305c123b refs/tags/v4.1.5
a5ac7e51b41094c92402da3b24376905380afc29 refs/tags/v4.1.6
692973e3d937129bcbf40652eb9f2f61becf3332 refs/tags/v4.1.7
d632683dd7b4114ad314bca15554477dd762a938 refs/tags/v4.2.0
eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 refs/tags/v4.2.1
11bd71901bbe5b1630ceea73d27597364c9af683 refs/tags/v4.2.2
08eba0b27e820071cde6df949e0beb9ba4906955 refs/tags/v4.3.0
34e114876b0b11c390a56381ad16ebd13914f8d5 refs/tags/v4.3.1
93cb6efe18208431cddfb8368fd83d5badbf9bfd refs/tags/v5
08c6903cd8c0fde910a37f88322edcfb5dd907a8 refs/tags/v5.0.0
93cb6efe18208431cddfb8368fd83d5badbf9bfd refs/tags/v5.0.1
de0fac2e4500dabe0009e67214ff5f5447ce83dd refs/tags/v6
71cf2267d89c5cb81562390fa70a37fa40b1305e refs/tags/v6-beta
1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 refs/tags/v6.0.0
8e8c483db84b4bee98b60c0593521ed34d9990e8 refs/tags/v6.0.1
de0fac2e4500dabe0009e67214ff5f5447ce83dd refs/tags/v6.0.2
ハッシュ値は可読性が低いのでコメントを
ハッシュ値をコミットするだけだとマジックナンバーでしか無いので、ハッシュ値指定するのであればコメントを付記しましょう。
次のような例です。
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
なんのためにこの検討が必要か
次の文章はgeminiにより生成しました。
GitHub Actionsの「タグ」は、動的なポインタに過ぎません。
タグの付け替えリスク: タグ(例: v2)は、アクションの作者がいつでも別のコミットに付け替えることができます。
サプライチェーン攻撃: 万が一、サードパーティ製アクションのメンテナーのアカウントが乗っ取られた場合、既存のタグが悪意のあるコードを含むコミットに付け替えられ、あなたのパイプラインで実行されてしまう可能性があります。
再現性の欠如: 「昨日まで動いていたワークフローが、タグの自動更新(マイナーアップデート)によって今日突然壊れる」という事態を防げません。
これを回避するために、コミットハッシュを指定する、という手段が考えられます。
まとめ
これらによって次の2点が達成できます。
- どのバージョンタグとハッシュ値が紐づいているかを確認をスムーズにできる。
- レビュワーは本当に最新か?や、ハッシュ値との紐づきあってる?などが知りたいので、その確認の助けとなるリストを用意できる。