変更要約: GH-200 第3章を新規作成(カスタムアクションの作成=JavaScript/Docker/コンポジットの種別と選択・action.yml メタデータ・inputs/outputs・ワークフローコマンド・トラブルシュート、配布と保守=公開/プライベート/Marketplace・Marketplace 公開手順・タグ/リリース/メジャータグ移動/SHA ピン留め・@main 回避・不変アクション)
3.2アクションの配布・公開・バージョン管理
アクションの配布モデル(公開・プライベート・Marketplace)、GitHub Marketplace への公開手順、そしてタグ・リリース・メジャーバージョンタグ・コミット SHA ピン留めを用いたバージョン管理とリリース戦略、ホスト型ランナーでの不変(immutable)アクションの考え方を理解します。
アクションを作ったら、誰がどう使えるようにするか= 配布モデル を選びます。同一リポジトリ内でだけ使う、組織内の プライベート リポジトリで共有する、公開(public) リポジトリにして誰でも uses: で参照できるようにする、さらに発見性を高めるため GitHub Marketplace に公開する、という選択肢があります。利用側は uses: owner/repo@ref の @ref でバージョンを指定するため、どうバージョンを切るかが保守性と安全性を大きく左右します。
3.2.1Marketplace への公開
Marketplace に公開するには、アクションを 公開リポジトリ に置き、ルートに action.yml(name・description・branding)を備え、リポジトリで リリース(release) を作成します。公開時に Marketplace のカテゴリを選び、利用規約に同意します。アクション名は Marketplace 内で一意である必要があります。公開後は、利用者が Marketplace から検索して uses: でワークフローに追加できます。
3.2.2バージョン管理とリリース戦略
利用者は通常、メジャーバージョンタグ(@v4 のような)で参照します。アクション提供者は、新しいパッチ/マイナーをリリースするたびに、その メジャータグ(v4)を最新コミットへ移動 させ、利用者が @v4 のままで修正を受け取れるようにします(セマンティックバージョニング+移動するメジャータグが定石)。これに対し、最高のセキュリティを求める利用者は コミット SHA でのピン留め(@a1b2c3... フルSHA)を選びます——タグは付け替え可能なので、改ざんや予期せぬ変更を防ぐにはイミュータブルな SHA が確実です。@main のような 流動的な参照は避ける のが安全な既定です。
| 参照 | 例 | 特徴 |
|---|---|---|
| メジャータグ | @v4 | 修正を自動受領・利便性高(提供者が移動) |
| 完全な SHA | @a1b2c3d… | 改ざん防止・最も安全(不変) |
| 流動的な参照 | @main | 予測不能・原則避ける |
3.2.3不変(immutable)アクション
GitHub はホスト型ランナーで 不変(immutable)アクション の仕組みを進めています。これは、リリースされたアクションのバージョンを 書き換え不能 にし、利用者が参照したバージョンが後から差し替えられないことを保証する考え方です(パッケージレジストリ由来の配布)。これにより「タグの付け替えで中身が変わる」リスクが下がり、SHA ピン留めと合わせて サプライチェーンの安全性 を高めます。試験では「バージョン参照の安定性・改ざん防止」という文脈で問われます。
頻出:
①配布=同一リポジトリ内/プライベート(組織内)/公開/Marketplace。
②Marketplace 公開=公開リポジトリ+action.yml(branding)+リリース作成、名前は一意。
③利用者は @メジャータグ(v4) で修正を受領、提供者は メジャータグを最新へ移動。
④最高のセキュリティ=コミット SHA でピン留め、@main は避ける。
⑤不変(immutable)アクション=バージョンの書き換え不能でサプライチェーン安全。
混同・注意:
①@main 参照は中身が予期せず変わる——本番は @メジャータグか SHA。
②メジャータグは付け替え可能=最高の改ざん防止にはフル SHA ピン留め。
③Marketplace 公開にはリリース作成が必要(タグだけでは不十分)。
④プライベート配布と公開/Marketplace を混同しない——社内限定ならプライベート+アクセス設定。
3.2.4この節のまとめ
- 配布=同一リポジトリ/プライベート(組織)/公開/Marketplace。uses: owner/repo@ref で参照
- Marketplace 公開=公開リポジトリ+action.yml(branding)+リリース作成、名前は一意
- @メジャータグ(v4)で修正受領、提供者はタグを最新へ移動。最高の安全は SHA ピン留め、@main は避ける
- 不変(immutable)アクションでバージョンの書き換えを防ぎサプライチェーンを強化
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. サードパーティのアクションを本番ワークフローで使うにあたり、改ざんや予期せぬ変更を最大限防ぎたいです。最も安全な参照方法はどれですか?
Q2. 自作アクションのパッチ修正を、利用者が @v3 のままで自動的に受け取れるようにしたいです。提供者側の正しい運用はどれですか?
Q3. 自作アクションを GitHub Marketplace で公開するための要件として正しいものはどれですか?
Q4. 社内チームだけで使うアクションを、公開せずに組織内の他リポジトリから利用できるようにしたいです。適切な配布はどれですか?
Q5. アクションの参照に @main を使うことの主なリスクはどれですか?
Q6. 「不変(immutable)アクション」が高めるものとして最も適切なのはどれですか?

