Skip to main content

自己ホスト ランナーの概要

独自のランナーをホストして、GitHub Actionsワークフロー中でジョブの実行に使われる環境をカスタマイズできます。

Note

GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。

自己ホスト ランナーの概要

セルフホステッド ランナーとは、GitHub で GitHub Actions のジョブを実行するためにデプロイして管理するシステムです。 GitHub Actions の詳細については、「GitHub Actions を理解する」と「エンタープライズの GitHub Actions について」を参照してください。

セルフホステッド ランナーを使用すると、大規模なジョブを実行するための処理能力やメモリのニーズを満たすカスタム ハードウェア構成の作成、ローカル ネットワークで利用可能なソフトウェアのインストール、オペレーティング システムの選択が行えます。 セルフホステッド ランナーは、物理または仮想にでき、コンテナー内、オンプレミス、またはクラウドに配置できます。

管理階層のさまざまなレベルで自己ホストランナーを追加できます。

  • リポジトリレベルのランナーは、単一のリポジトリ専用です。
  • Organization レベルのランナーは、Organization 内の複数のリポジトリのジョブを処理できます。
  • Enterprise レベルのランナーは、Enterprise アカウントの複数の Organization に割り当てることができます。

ランナーマシンは、GitHub Actionsのセルフホステッド ランナー アプリケーションを使って GitHub に接続します。 GitHub Actionsランナーアプリケーションはオープンソースです。 ランナー リポジトリでイシューを投稿およびファイルできます。 新しいバージョンがリリースされると、ランナー アプリケーションは 24 時間以内に自動的に更新されます。

Note

エフェメラル ランナーを使用しており、自動更新を無効にしている場合は、GitHub Enterprise Server をアップグレードする前に、まず、アップグレードしたインスタンスが実行されるランナー アプリケーションのバージョンにセルフホスト ランナーをアップグレードしておく必要があります。 エフェメラル ランナーをアップグレードする前に GitHub Enterprise Server をアップグレードした場合、ランナーがオフラインになる可能性があります。 詳しくは、「アップグレード プロセスの概要」をご覧ください。

14 日以上 GitHub Actions に接続していないセルフホステッド ランナーは、GitHub から自動的に削除されます。 1 日以上 GitHub Actions に接続していないエフェメラル セルフホステッド ランナーは、GitHub から自動的に削除されます。

自己ホストランナーのインストールと使用の詳細については、「自己ホストランナーの追加」と「ワークフローでのセルフホストランナーの利用」を参照してください。

GitHub-ホステッド ランナーと自己ホスト ランナーとの違い

GitHub-ホステッド ランナーを使用すると、ワークフローを迅速かつ簡単に実行することができます。自己ホスト ランナーを使用すると、独自のカスタム環境でワークフローを実行するための高度な構成が可能な方法です。

GitHubホストランナー

  • オペレーティング システム、プリインストールされたパッケージとツール、自己ホスト ランナー アプリケーションの自動更新プログラムを受け取ります。
  • GitHubによって管理及びメンテナンスされます。
  • ジョブを実行するたびにクリーンなインスタンスを提供します。
  • GitHubプランの無料の分を使います。無料の分を超えると、分単位のレートが適用されます。

自己ホスト ランナー:

  • 自己ホスト ランナー アプリケーションの自動更新プログラムのみを受け取りますが、ランナーの自動更新プログラムを無効にすることもできます。 自己ホストランナーでのランナー ソフトウェアの更新プログラムの制御の詳細については、「セルフホステッド ランナーによる自動スケーリング」を参照してください。 オペレーティング システムとその他すべてのソフトウェアは、お客様の責任で更新する必要があります。
  • 既に料金を支払っているクラウド サービスまたはローカル マシンを使用することができます。
  • ハードウェア、オペレーティング システム、ソフトウェア、セキュリティの要件に合わせてカスタマイズできます。
  • ジョブを実行するたびにクリーンなインスタンスを用意する必要はありません。
  • GitHub Actions と一緒に無料で使用できますが、ランナー マシンのメンテナンス コストはユーザーの負担となります。
  • 特定のワークフロー、organization、リポジトリへのアクセスを制限するために、グループに編成できます。 詳細については、「グループを使用してセルフホストランナーへのアクセスを管理する」を参照してください。

自己ホストランナーマシンに対する要求

以下の要求を満たしていれば、いかなるマシンも自己ホストランナーとして利用できます。

  • マシン上に自己ホストランナーアプリケーションをあなたがインストールして実行できること。 詳細については、「自己ホストランナーをサポートするアーキテクチャとオペレーティング システム」を参照してください。
  • そのマシンがGitHub Actionsと通信できる。 詳しくは、「セルフホステッド ランナーと GitHub の間の通信」をご覧ください。
  • そのマシンが、実行しようとしている種類のワークフローに対して十分なハードウェアリソースを持っていること。 自己ホストランナーアプリケーションそのものは、最小限のリソースしか必要としません。
  • Dockerコンテナアクションあるいはサービスコンテナを使うワークフローを実行したいなら、Linuxのマシンを使い、Dockerがインストールされていなければなりません。

自己ホスト ランナーの自動スケーリング

受信した Webhook イベントに応じて、環境内の自己ホスト ランナーの数を自動的に増減できます。 詳しくは、「セルフホステッド ランナーによる自動スケーリング」をご覧ください。

Usage limits (使用状況の制限)

自己ホストランナーを使用する場合、GitHub Actions の使用にはいくつかの制限があります。 これらの制限は変更されることがあります。

  • ジョブの実行時間 - ワークフロー内の各ジョブを実行時間最大 5 日間まで実行できます。 ジョブがこの制限に達すると、そのジョブは終了し、完了できません。 * ワークフローの実行時間 - 各ワークフローの実行は 35 日までに制限されます。 ワークフローの実行がこの制限に達すると、そのワークフローの実行はキャンセルされます。 この期間には、実行時間と、待機と承認に費やされた時間が含まれます。
  • ジョブの待ち時間 - 少なくとも 24 時間キューに入れられている自己ホスト ランナーの各ジョブはキャンセルされます。 キューの実際の時間は、キャンセルされるまでに最大 48 時間に達する可能性があります。 この制限内に自己ホストランナーがジョブの実行を開始しなければ、ジョブは終了させられ、完了に失敗します。
  • API 要求 - 1 つのリポジトリの全アクションで 1 時間に実行できる GitHub API への要求は、最大 1,000 です。 要求超過になると、それ以上の API 呼び出しは失敗し、それによってジョブが失敗する可能性があります。
  • ジョブ マトリックス - ジョブマトリックスは、ワークフローの実行ごとに最大で256のジョブを生成できます。 この制限は、GitHub ホステッド ランナーとセルフホステッド ランナーの両方に適用されます。
  • ワークフロー実行キュー - リポジトリあたり 10 秒間隔で 500 を超えるワークフロー実行をキューに入れることはできません。 ワークフローの実行がこの制限に達すると、そのワークフローの実行は終了させられ、完了に失敗します。
  • 自己ホスト ランナーの登録 - 1 つのランナー グループに最大 10,000 個の自己ホスト ランナーを登録できます。 この制限に達すると、新しいランナーを追加できなくなります。

自己ホストランナーのワークフローの継続性

GitHub Actionsサービスが一時的に利用できなくなっている場合、ワークフローの実行はトリガーされてから30分以内にキューイングされていなければ、破棄されます。 たとえば、ワークフローがトリガーされ、そしてGitHub Actionsサービスが31分以上利用できなければ、そのワークフローの実行は処理されません。

自己ホストランナーをサポートするアーキテクチャとオペレーティングシステム

自己ホストランナーアプリケーション用には、以下のオペレーティングシステムがサポートされています。

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 ビット)
  • Windows 11 64 ビット
  • Windows Server 2016 64 ビット
  • Windows Server 2019 64-bit
  • Windows Server 2022 64 ビット

macOS

  • macOS 11.0 (Big Sur) 以降

アーキテクチャ

自己ホストランナーアプリケーションでは、次のプロセッサアーキテクチャがサポートされています。

  • x64 - Linux、macOS、Windows。
  • ARM64 - Linux、macOS。
  • ARM32 - Linux。

自己ホスト ランナーでサポートされるアクション

現在、すべての actions/setup-LANGUAGE アクション リポジトリは、macOS、Windows、Ubuntu という 3 つのプラットフォームをサポートしています。 GitHub Enterprise Server で GitHub のアクションを使用する場合、またはインターネット アクセスのない自己ホスト ランナーで actions/setup-LANGUAGE アクションを使用する場合は、いくつかの追加構成が必要になることがあります。 詳細については、「GitHub.com からのアクションへのアクセスを管理する」を参照し、GitHub Enterprise のサイト管理者に問い合わせてください。

セルフホステッド ランナーと GitHub の間の通信

セルフホステッド ランナーは お使いの GitHub Enterprise Server インスタンス に接続して、ジョブの割り当てを受け取り、ランナー アプリケーションの新しいバージョンをダウンロードします。 セルフホステッド ランナーは、HTTP(S) の "ロング ポーリング" を使います。これは、GitHub に対して 50 秒間接続を開き、応答を受信しない場合は、タイムアウトして新しいロング ポーリングを作成します。__ アプリケーションは、GitHub Actionsジョブを受け付けて実行するためにマシン上で動作していなければなりません。

セルフホステッド ランナーと GitHub 間の接続は、HTTP (ポート 80) または HTTPS (ポート 443) を経由します。 HTTPS 経由で確実に接続を行うには、GitHub Enterprise Server に対して TLS を構成します。 詳細については、「TLSの設定」を参照してください。

ランナーから GitHub Enterprise Server への送信接続のみが必要となります。 GitHub Enterprise Server からランナーへの受信接続は必要ありません。 キャッシュを機能させるには、ランナーが BLOB ストレージと通信し、そこからコンテンツを直接ダウンロードできる必要があります。

GitHub Enterprise Server は、お使いの GitHub Enterprise Server インスタンス のホスト名と API サブドメインで、ランナーからの HTTP(S) 経由のインバウンド接続を受け入れる必要があります。ランナーは、お使いの GitHub Enterprise Server インスタンス のホスト名と API サブドメインへの、HTTP(S) 経由のアウトバウンド接続を許可する必要があります。

自己ホスト ランナーは、外部のインターネット アクセスを必要とせずに機能します。 その結果、ネットワーク ルーティングを使用して、自己ホスト ランナーと GitHub Enterprise Server の間の通信を管理できます。 たとえば、プライベート IP アドレスを自己ホスト ランナーに割り当て、トラフィックを GitHub Enterprise Server に送信するようにルーティングを構成できます。トラフィックが公衆ネットワークを通過する必要はありません。

自己ホストランナーは、プロキシサーバーと合わせて使うこともできます。 詳しくは、「セルフホストランナーとプロキシ サーバーを使う」をご覧ください。

一般的なネットワーク接続の issue のトラブルシューティングの詳細については、「自己ホストランナーのモニタリングとトラブルシューティング」を参照してください。

自己ホスト ランナーと GitHub.com の間の通信

GitHub Enterprise Server の GitHub.com アクションへの自動アクセスを有効にしている場合を除き、自己ホスト ランナーが GitHub.com に接続する必要はありません。 詳しくは、「Enterprise でのアクションの使用について」をご覧ください。

GitHub.com アクションへの自動アクセスを有効にした場合、自己ホスト ランナーでは GitHub.com に直接接続してアクションをダウンロードします。 下記の GitHub の URL と通信するための適切なネットワークアクセスがマシンにあることを確認する必要があります。

Shell
github.com
api.github.com
codeload.github.com
pkg.actions.githubusercontent.com

Note

一覧表示されているドメインの一部は、CNAME レコードを使用して構成されます。 ファイアウォールによっては、すべての CNAME レコードに対して規則を再帰的に追加する必要がある場合があります。 CNAME レコードは今後変更される可能性があり、一覧表示されているドメインのみが一定のままであることに注意してください。

自己ホスト ランナーのセキュリティ

自己ホスト ランナー上で実行される信頼できないワークフローでは、マシンやネットワーク環境に大きなセキュリティ リスクがもたらされます。これは特に、マシンでジョブにまたがって環境が保持される場合に当てはまります。 リスクには以下のようなものがあります。

  • マシン上での悪意あるプログラムの実行
  • マシンのランナーのサンドボックスからの脱却
  • マシンのネットワーク環境へのアクセスの露出
  • 望まないもしくは危険なデータのマシン上への保存

自己ホストランナーのセキュリティ強化の詳細については、「GitHub Actions のセキュリティ強化」を参照してください。

自己ホスト ランナーの使用を制限する

Enterprise の所有者と Organization の所有者は、リポジトリ レベルのセルフホステッド ランナーの作成を許可するリポジトリを選択できます。 "Manage organization runners and runner groups" アクセス許可を持つユーザーは、organization 内のリポジトリのリポジトリ レベルの自己ホスト ランナーの作成を許可するリポジトリのみを選択できます。

カスタム organization の役割の詳細については、「カスタム組織の役割の情報」を参照してください。

詳細については、「エンタープライズで GitHub Actions のポリシーを適用する」と「Organization について GitHub Actions を無効化または制限する」を参照してください。

参考資料