変更要約: GH-200 第4章を新規作成(ガバナンス=利用ポリシー無効/全許可/GitHub製/検証済み/許可リスト・SHA ピン留め必須化・再利用コンポーネントのアクセス設定・フォークPR承認・波及、ランナーの大規模管理=GitHubホスト/セルフホスト・ランナーグループ・IP許可リスト・プリインストール/toolcache/setup-*・トラブルシュート、暗号化シークレットと変数=組織/リポジトリ/環境のスコープと優先順位・secrets/vars・マスキング・REST API 管理)
4.2ランナーの大規模管理
GitHub ホスト型ランナーとセルフホストランナーの違いと使い分け、ランナーグループによるアクセス制御、IP 許可リストとネットワーク設定、プリインストールされたソフトウェア/ツールバージョンの把握と実行時の追加インストール、そしてランナーの監視とトラブルシュートを理解します。
ワークフローのジョブは ランナー の上で実行されます。GH-200 では、GitHub ホスト型ランナー と セルフホストランナー の違いを正しく理解し、要件に応じて選び、組織で安全に管理することが問われます。GitHub ホスト型は GitHub が用意・更新・破棄まで管理する使い捨ての仮想環境で、ジョブごとにクリーンです。セルフホストは自分のマシン/クラウドにランナーアプリを入れて登録するもので、特殊なハードウェア・社内ネットワークアクセス・大きなキャッシュなどが必要なときに使います。
| 観点 | GitHub ホスト型 | セルフホスト |
|---|---|---|
| 管理 | GitHub が管理・使い捨て | 自分で構築・保守 |
| 環境 | ジョブごとにクリーン | 状態が残りうる |
| 向くケース | 一般的な CI・素早い開始 | 特殊HW・社内NW・大規模キャッシュ |
| 課金 | 利用分課金(無料枠あり) | 自前インフラ費用 |
4.2.1ランナーグループとアクセス制御
セルフホストランナーは ランナーグループ にまとめ、「どの組織/リポジトリがそのランナーを使えるか」を制御します。これにより、機密性の高い本番デプロイ用ランナーを特定リポジトリだけに限定する、といった アクセス制御 が可能です。誰でも使えるセルフホストランナーは、悪意ある PR が機密マシン上でコードを実行する温床になり得るため、公開リポジトリではセルフホストランナーの利用に注意します(GitHub も非推奨)。ラベル を付けて runs-on: で対象ランナーを指定し、適切なグループに振り分けます。
4.2.2IP 許可リストとネットワーク
組織は IP 許可リスト を設定して、許可した IP 範囲からのみアクセスを受け付けられます。GitHub ホスト型ランナーを使う場合、その送信元 IP は変動するため、固定したいときは より大きな(larger)ランナー の静的 IP 範囲や、自前ネットワーク内の セルフホストランナー を使います。社内リソース(オンプレ DB など)にアクセスする必要があるジョブは、ネットワーク到達性の観点からセルフホスト(または適切なネットワーク構成)を選ぶのが定石です。
4.2.3プリインストールソフトと実行時インストール
GitHub ホスト型ランナーには、多くの言語ランタイム・CLI・ビルドツールが プリインストール されています。実際のバージョンは ランナーイメージのリリースノート や ツールキャッシュ(toolcache) で確認できます。必要なツールが無い/別バージョンが要る場合は、setup-* アクション(actions/setup-node 等)、パッケージマネージャー、キャッシュ、コンテナイメージなどで 実行時にインストール します。セルフホストでは カスタムイメージ に必要物を焼き込んでおく方法もあります。なお、windows-latest の Windows Server 2025 移行や ubuntu-20.04 の廃止のような イメージ更新 でビルドが壊れることがある点に注意します。
4.2.4ランナーの監視とトラブルシュート
セルフホストランナーは、オンライン/オフラインの状態、キューに積まれたジョブが 実行されない(idle なランナーが無い・ラベル不一致) といった問題を監視します。よくある原因は、ランナーアプリの停止、必要な ラベル と runs-on: の不一致、ネットワーク/認証の問題、ディスク不足です。ランナーの 診断ログ を確認し、必要に応じて再登録します。GitHub ホスト型では、混雑による待機や 同時実行数の上限(concurrency 制限) がボトルネックになることがあります。
頻出:
①GitHub ホスト型=使い捨て・クリーン・素早い、セルフホスト=特殊HW/社内NW/大規模キャッシュ(状態が残りうる)。
②セルフホストはランナーグループでアクセス制御、公開リポジトリでの使用は危険。
③固定 IP/社内アクセス=larger ランナーの静的 IP かセルフホスト、IP 許可リスト。
④プリインストール版はリリースノート/toolcacheで確認、不足は setup-* アクション等で実行時インストール。
⑤ジョブが動かない=ラベル不一致/idle ランナー無しを疑う。
混同・注意:
①セルフホストランナーは状態が残るためジョブが汚染され得る——クリーンさが要るなら GitHub ホスト型か使い捨て構成。
②公開リポジトリでセルフホストを使うと、悪意ある PR がマシン上でコードを実行する危険。
③runs-on: のラベルがランナーのラベルと一致しないとジョブはキューで止まる。
④GitHub ホスト型の送信元 IP は変動——固定前提の設計は破綻する。
4.2.5この節のまとめ
- GitHub ホスト型=使い捨て/クリーン/素早い、セルフホスト=特殊HW/社内NW/大規模キャッシュ(状態が残りうる)
- セルフホストはランナーグループでアクセス制御、公開リポジトリでの使用は危険。IP 許可リストで送信元を制限
- プリインストール版はリリースノート/toolcache で確認、不足は setup-* アクション等で実行時インストール
- ジョブが動かない時はラベル不一致/idle ランナー無し/ランナー停止を診断、イメージ更新による破壊に注意
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. ジョブがオンプレミスのデータベースにアクセスする必要があり、特殊なビルドツールも常駐させたいです。適切なランナーはどれですか?
Q2. 本番デプロイ用のセルフホストランナーを、限られたリポジトリだけが使えるように制御したいです。何を使いますか?
Q3. GitHub ホスト型ランナーに必要な Node のバージョンが入っているか分からず、無ければ特定版を使いたいです。最適な方法はどれですか?
Q4. セルフホストランナーへ送ったジョブがキューに溜まったまま実行されません。まず疑うべき原因はどれですか?
Q5. 公開(public)リポジトリでセルフホストランナーを使うことが一般に推奨されない理由はどれですか?
Q6. 組織のセキュリティ要件で、GitHub への接続を特定の IP 範囲からのみに制限したいです。使う機能はどれですか?

