0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

資料 - ランナー

GitHub Actionsの実行環境であるランナーには、現在3つの選択肢があります。それぞれの特徴を理解することで、プロジェクトの要件に最適な環境を選択できます。本記事では、GitHub-hostedランナー、Larger runners、Self-hostedランナーの仕様と使い分けについて詳しく解説します。


1. GitHub-hostedランナー(標準)

GitHubが提供・管理する標準的な実行環境です。インフラの管理が不要で、すぐに使い始められる点が最大の魅力です。

1.1 パブリックリポジトリ向けスペック

パブリックリポジトリでは、無料かつ無制限で利用できます。各OSで以下のスペックが提供されています。

OS CPU メモリ ストレージ アーキテクチャ ワークフローラベル
Linux 4 16 GB 14 GB x64 ubuntu-latest, ubuntu-24.04, ubuntu-22.04
Linux 1 5 GB 14 GB x64 ubuntu-slim
Windows 4 16 GB 14 GB x64 windows-latest, windows-2025, windows-2022
Linux 4 16 GB 14 GB arm64 ubuntu-24.04-arm, ubuntu-22.04-arm
Windows 4 16 GB 14 GB arm64 windows-11-arm
macOS 4 14 GB 14 GB Intel macos-13, macos-15-intel
macOS 3 (M1) 7 GB 14 GB arm64 macos-latest, macos-14, macos-15, macos-26 (プレビュー)

1.2 プライベートリポジトリ向けスペック

プライベートリポジトリでは、無料枠を消費した後に従量課金となります。パブリックリポジトリと比較してCPUとメモリが控えめに設定されています。

OS CPU メモリ ストレージ アーキテクチャ ワークフローラベル
Linux 2 7 GB 14 GB x64 ubuntu-latest, ubuntu-24.04, ubuntu-22.04
Linux 1 5 GB 14 GB x64 ubuntu-slim
Windows 2 7 GB 14 GB x64 windows-latest, windows-2025, windows-2022
macOS 4 14 GB 14 GB Intel macos-13, macos-15-intel
macOS 3 (M1) 7 GB 14 GB arm64 macos-latest, macos-14, macos-15, macos-26 (プレビュー)

1.3 ubuntu-slimランナーの特徴

軽量なタスク向けに最適化された1 CPUランナーです。以下の特徴があります。

  • コンテナ内で実行(フルVMではない)
  • ジョブタイムアウトは15分
  • 最小限のツールセットのみインストール済み
  • Issue操作や短時間ジョブに適している
  • 重いCI/CDビルドには不向き

使用例:

name: "軽量タスク"
on: [push]

jobs:
  quick-task:
    runs-on: ubuntu-slim
    steps:
      - uses: actions/checkout@v4
      - name: "シンプルなスクリプト実行"
        run: echo "高速で軽量な処理"

1.4 注目すべき機能

1.4.1 Androidハードウェアアクセラレーション対応

Linux x64ランナーでは、Android SDKツール向けのハードウェアアクセラレーションがサポートされています。これによりAndroidテストの実行が大幅に高速化され、課金対象の実行時間も削減できます。

1.4.2 arm64 macOSランナーの制限事項

  • ネストされた仮想化とMetal Performance Shaders(MPS)は未対応
  • Azure VNetや固定IPアドレスは現在利用不可
  • 静的UUID/UDIDは割り当てられません(Appleの仮想化フレームワークの制限)
  • Intel macOSランナーには固定UDID 4203018E-580F-C1B5-9525-B745CECA79EB が割り当て済み

2. Larger runners(大規模ランナー)

GitHub TeamまたはGitHub Enterprise Cloudプランで利用可能な、より強力なマネージドランナーです。標準ランナーでは物足りないが、自前でインフラを管理したくない場合に最適です。

2.1 一般用途向けスペック

幅広い選択肢から、プロジェクトの要件に合ったスペックを選択できます。

CPU メモリ ストレージ アーキテクチャ OS
2 8 GB 75 GB x64, arm64 Ubuntu
4 16 GB 150 GB x64, arm64 Ubuntu, Windows
8 32 GB 300 GB x64, arm64 Ubuntu, Windows
16 64 GB 600 GB x64, arm64 Ubuntu, Windows
32 128 GB 1200 GB x64, arm64 Ubuntu, Windows
64 208 GB 2040 GB arm64 Ubuntu, Windows
64 256 GB 2040 GB x64 Ubuntu, Windows
96 384 GB 2040 GB x64 Ubuntu, Windows

注意事項

  • 4 vCPU Windowsランナーは、Windows Server 2025またはBase Windows 11 Desktopイメージでのみ動作します

2.2 GPU搭載ランナー

機械学習やグラフィックス処理などのGPU演算が必要なワークロードに対応します。

CPU GPU数 GPUカード メモリ VRAM ストレージ OS
4 1 Tesla T4 28 GB 16 GB 176 GB Ubuntu, Windows

2.3 macOS Larger runners

サイズ アーキテクチャ CPU メモリ ストレージ ワークフローラベル
Large Intel 12 30 GB 14 GB macos-latest-large, macos-13-large, macos-14-large, macos-15-large
XLarge arm64 (M2) 5 (+8 GPUコア) 14 GB 14 GB macos-latest-xlarge, macos-13-xlarge, macos-14-xlarge, macos-15-xlarge, macos-26-xlarge (プレビュー)

注意事項

  • 5 vCPU macOSランナーはパブリックプレビュー中です

2.4 高度な機能

Larger runnersでは、以下の追加機能が利用可能です。

固定IPアドレス

デフォルトでは動的IPアドレスが割り当てられますが、GitHub Enterprise Cloudの顧客は固定IPアドレスを設定できます。これにより、ファイアウォールのallowlist設定が可能になります。

  • 全体で最大10個のLarger runnersに固定IPアドレスを設定可能
  • 90日間未使用の場合、IPアドレス範囲は自動的に削除されます
  • 10個以上必要な場合は、GitHubサポートへの連絡が必要です

Azure VNet対応

Azureプライベートネットワークとの統合により、セキュアなネットワーク環境を構築できます。

ランナーのグループ化

複数のランナーをグループ化して管理できます。

オートスケーリング

並行ワークフローに対応した自動スケーリングが可能です。

使用例:

name: "大規模ビルド"
on: [push]

jobs:
  heavy-build:
    runs-on: ubuntu-latest-64-cores  # カスタムラベル例
    steps:
      - uses: actions/checkout@v4
      - name: "並列ビルド"
        run: make -j64

3. Self-hostedランナー(自前ホスト)

自分で用意・管理するランナーです。完全なカスタマイズが可能で、特殊な要件がある場合に最適です。

3.1 システム要件

対応OS

Linux系:

  • Red Hat Enterprise Linux 8以降
  • CentOS 8以降
  • Oracle Linux 8以降
  • Fedora 29以降
  • Debian 10以降
  • Ubuntu 20.04以降
  • Linux Mint 20以降
  • openSUSE 15.2以降
  • SUSE Enterprise Linux (SLES) 15 SP2以降

Windows系:

  • Windows 10 64-bit
  • Windows 11 64-bit
  • Windows Server 2016/2019/2022 64-bit

macOS:

  • macOS 11.0 (Big Sur) 以降

対応アーキテクチャ

  • x64:Linux、macOS、Windows
  • ARM64:Linux、macOS、Windows(現在パブリックプレビュー)
  • ARM32:Linux

ハードウェア要件

  • 最低限のリソースで動作可能(ランナーアプリケーション自体は軽量)
  • 実行するワークフローの種類に応じて十分なリソースを確保
  • Dockerコンテナアクションやサービスコンテナを使用する場合は、Linuxマシン+Dockerのインストールが必須

ネットワーク要件

  • 最低70 kbpsのアップロード/ダウンロード速度
  • HTTPS接続(ポート443)が必須
  • GitHubとの双方向通信が必要

3.2 ジョブルーティングの仕組み

Self-hostedランナーへのジョブ割り当ては、以下の優先順位で処理されます。

3.3 オートスケーリング

Self-hostedランナーは、ワークフローの負荷に応じて自動的にスケールできます。

3.3.1 推奨される実装方法

GitHubは、Kubernetesベースの公式オートスケーラー Actions Runner Controller (ARC) を推奨しています。ただし、Kubernetesの深い知識と経験が必要です。

3.3.2 Ephemeralランナーの活用

オートスケーリングには、使い捨て(Ephemeral)モードの使用を強く推奨します。

Ephemeralランナーの登録:

./config.sh --url https://github.com/yamada-taro --token サンプルトークン --ephemeral

メリット:

  • 各ジョブに対してクリーンな環境を提供
  • 前のジョブの機密情報が残留しない
  • 侵害されたランナーが新しいジョブを受け取るリスクを軽減
  • 1ジョブ処理後に自動的に登録解除される

注意点:

  • Ephemeralランナーのログファイルは、外部ログストレージに転送する必要があります
  • 本番環境に導入する前に、ログの転送と保存を確実に実装してください

3.3.3 Webhook駆動のオートスケーリング

workflow_job webhookのペイロードには、ワークフローのライフサイクルに対応したactionキーが含まれます。

  • queued:ジョブがキューに追加された
  • in_progress:ジョブが実行中
  • completed:ジョブが完了した

このwebhookを使用して、独自のオートスケーリング環境を構築できます。

Webhookペイロードを活用することで、リアルタイムにランナーの起動・削除を制御できます。

3.4 認証要件

リポジトリ・組織レベルのランナー(APIを使用)

アクセストークンに必要なスコープ:

  • プライベートリポジトリ:repo
  • パブリックリポジトリ:public_repo
  • 組織:admin:org

GitHub Appの場合:

  • リポジトリ:administration 権限
  • 組織:organization_self_hosted_runners 権限

エンタープライズレベルのランナー

アクセストークンに必要なスコープ:

  • manage_runners:enterprise

3.5 自動ソフトウェア更新の制御

デフォルトでは、新しいバージョンがリリースされると自動的に更新されます。コンテナでEphemeralランナーを使用する場合、この動作は非効率的です。

自動更新を無効化する方法:

./config.sh --url https://github.com/あなたの組織 --token サンプルトークン --disableupdate

注意事項:

  • 自動更新を無効化した場合でも、30日以内にランナーバージョンを更新する必要があります
  • 更新しない場合、GitHub Actionsサービスはジョブをキューに入れなくなります
  • 重大なセキュリティ更新がある場合も、更新するまでジョブは割り当てられません
  • actions/runnerリポジトリの通知を購読して、新しいリリースを追跡することを推奨します

3.6 通信要件

Self-hostedランナーは、以下のGitHubドメインとの通信が必要です。

必須の通信先

基本操作に必要:

  • github.com
  • api.github.com
  • *.actions.githubusercontent.com

アクションのダウンロード:

  • codeload.github.com

ジョブサマリー、ログ、成果物、キャッシュのアップロード/ダウンロード:

  • results-receiver.actions.githubusercontent.com
  • *.blob.core.windows.net

ランナーバージョンの更新:

  • objects.githubusercontent.com
  • objects-origin.githubusercontent.com
  • github-releases.githubusercontent.com
  • github-registry-files.githubusercontent.com

OIDCトークンの取得:

  • *.actions.githubusercontent.com

GitHub Packagesのパッケージやコンテナのダウンロード/公開:

  • *.pkg.github.com
  • pkg-containers.githubusercontent.com
  • ghcr.io

Git Large File Storage:

  • github-cloud.githubusercontent.com
  • github-cloud.s3.amazonaws.com

Dependabot更新ジョブ:

  • dependabot-actions.githubapp.com

リリース資産のダウンロード:

  • release-assets.githubusercontent.com

VNet:

  • api.snapcraft.io

ファイアウォール設定の注意点

一部のドメインはCNAMEレコードを使用して設定されています。ファイアウォールによっては、すべてのCNAMEレコードに対してルールを再帰的に追加する必要があります。CNAMEレコードは将来変更される可能性がありますが、上記のドメインは変わりません。


4. 選択基準のフローチャート

どのランナーを選択すべきか、以下のフローチャートを参考にしてください。


5. まとめ

GitHub Actionsのランナーは、用途に応じて3つの選択肢から選べます。

5.1 GitHub-hostedランナー(標準)

適している場合

  • パブリックリポジトリ(無料・無制限)
  • 標準的なスペックで十分なプロジェクト
  • インフラ管理を避けたい
  • すぐに始めたい

制限事項

  • スペックは固定(最大4 CPU、16 GB RAM)
  • ネットワーク設定のカスタマイズ不可
  • 動的IPアドレスのみ

5.2 Larger runners(大規模ランナー)

適している場合

  • より高いスペックが必要(最大96 CPU、384 GB RAM)
  • GPU演算が必要
  • 固定IPアドレスが必要
  • Azure VNetとの統合が必要
  • マネージド環境を維持したい

制限事項

  • GitHub TeamまたはEnterprise Cloudプラン必須
  • 追加コストが発生
  • macOSでは一部機能に制限あり

5.3 Self-hostedランナー(自前ホスト)

適している場合

  • 完全なカスタマイズが必要
  • オンプレミス環境が必須
  • 特殊なハードウェア・ソフトウェア要件がある
  • 厳格なコンプライアンス要件がある
  • 大規模なオートスケーリングが必要

制限事項

  • インフラの管理・保守が必要
  • セキュリティ対策は自己責任
  • ネットワーク設定の構築が必要
  • 30日以内の定期的なソフトウェア更新が必須

5.4 最後に

プロジェクトの規模、セキュリティ要件、予算、運用体制を考慮して、最適なランナーを選択してください。小規模なプロジェクトはGitHub-hostedから始め、必要に応じてLarger runnersやSelf-hostedに移行する段階的なアプローチも有効です。

特にSelf-hostedランナーを検討する場合は、Ephemeralモードでの運用とログの外部保存を必ず実装し、セキュリティとトレーサビリティを確保してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?