セルフホストランナーについて
セルフホストランナーでは、ハードウェア、オペレーティングシステム、ソフトウェアツールについてGitHubホストランナーよりもコントロールできます。 セルフホストランナーでは、大規模なジョブを実行するために処理能力やメモリを強化したカスタムハードウェア構成を作ったり、ローカルネットワークで利用できるソフトウェアをインストールしたり、GitHubホストランナーでは提供されていないオペレーティングシステムを選択したりできます。 セルフホストランナーは、物理、仮想、コンテナ内、オンプレミス、クラウド内のいずれでも可能です。
管理階層のさまざまなレベルでセルフホストランナーを追加できます。
- リポジトリレベルのランナーは、単一のリポジトリ専用です。
- Organization レベルのランナーは、Organization 内の複数のリポジトリのジョブを処理できます。
- Enterprise レベルのランナーは、Enterprise アカウントの複数の Organization に割り当てることができます。
ランナーマシンは、GitHub Actionsのセルフホストランナーアプリケーションを使ってGitHubに接続します。 GitHub Actionsランナーアプリケーションはオープンソースです。 runnerリポジトリに貢献し、Issueを登録できます。 新しいバージョンがリリースされると、ランナーアプリケーションはランナーにジョブが割り当てられた時、あるいはジョブが割り当てられなかったなら、リリースから一週間以内に、自動的に自分をアップデートします。
セルフホストランナーは、GitHub Actionsに30日以上接続されないと、GitHubから自動的に削除されます。
セルフホストランナーのインストールと利用に関する詳しい情報については「セルフホストランナーの追加」及び「ワークフロー内でのセルフホストランナーの利用」を参照してください。
GitHubホストランナーとセルフホストランナーの違い
GitHubホストランナーは、ワークフローを素早くシンプルに実行する方法を提供しますが、セルフホストランナーはユーザのカスタム環境内でワークフローを実行する、設定の幅が広い方法です。
GitHubホストランナーは:
- オペレーティングシステム、プリインストールされたパッケージとツール、セルフホストランナーアプリケーションの自動アップデートを受信します。
- GitHubによって管理及びメンテナンスされます。
- ジョブの実行のたびにクリーンなインスタンスを提供します。
- GitHubプランの無料の分を使います。無料の分を超えると、分単位のレートが適用されます。
セルフホストランナーは:
- セルフホストランナーアプリケーションのみ、自動アップデートを受信します。 オペレーティングシステムとその他のソフトウェアのアップデートはあなたがしなければなりません。
- すでに支払いをしているクラウドサービスあるいはローカルマシンを利用できます。
- 利用するハードウェア、オペレーティングシステム、ソフトウェア、セキュリティ上の要求に合わせてカスタマイズできます。
- ジョブの実行のたびにクリーンなインスタンスを保持する必要がありません。
- GitHub Actionsと合わせて無料で利用できますが、ランナーマシンのメンテナンスコストはあなたが受け持ちます。
セルフホストランナーマシンに対する要求
以下の要求を満たしていれば、いかなるマシンもセルフホストランナーとして利用できます。
- マシン上にセルフホストランナーアプリケーションをあなたがインストールして実行できること。 詳しい情報については、「セルフホストランナーでサポートされるアーキテクチャとオペレーティングシステム」を参照してください。
- そのマシンがGitHub Actionsと通信できる。 詳しい情報については「セルフホストランナーとGitHubの通信」を参照してください。
- そのマシンが、実行しようとしている種類のワークフローに対して十分なハードウェアリソースを持っていること。 セルフホストランナーアプリケーションそのものは、最小限のリソースしか必要としません。
- Dockerコンテナアクションあるいはサービスコンテナを使うワークフローを実行したいなら、Linuxのマシンを使い、Dockerがインストールされていなければなりません。
使用制限
セルフホストランナーを使用する場合、GitHub Actions の使用にはいくつかの制限があります。 これらの制限は変更されることがあります。
- ワークフローの実行時間 - 各ワークフローの実行は72時間までに制限されます。 ワークフローの実行がこの制限に達すると、そのワークフローの実行はキャンセルされます。
- ジョブキュー時間 - セルフホストランナーの各ジョブは、最大24時間キューイングできます。 この制限内にセルフホストランナーがジョブの実行を開始しなければ、ジョブは終了させられ、完了に失敗します。
- APIリクエスト - リポジトリ内のすべてのアクションにわたって、1時間のうちに最大1000回のAPIリクエストを実行できます。 この制限を超えた場合、超過のAPIコールは失敗し、それによってジョブも失敗するかもしれません。
- ジョブマトリックス - ジョブマトリックスは、ワークフローの実行ごとに最大で256のジョブを生成できます。 この制限は、セルフホストランナーにも適用されます。
Workflow continuity for self-hosted runners
GitHub Actionsサービスが一時的に利用できなくなっている場合、ワークフローの実行はトリガーされてから30分以内にキューイングされていなければ、破棄されます。 たとえば、ワークフローがトリガーされ、そしてGitHub Actionsサービスが31分以上利用できなければ、そのワークフローの実行は処理されません。
セルフホストランナーをサポートするアーキテクチャとオペレーティングシステム
セルフホストランナーアプリケーション用には、以下のオペレーティングシステムがサポートされています。
Linux
- Red Hat Enterprise Linux 7
- CentOS 7
- Oracle Linux 7
- Fedora 29以降
- Debian 9以降
- Ubuntu 16.04以降
- Linux Mint 18以降
- openSUSE 15以降
- SUSE Enterprise Linux (SLES) 12 SP2以降
Windows
- Windows 7 64-bit
- Windows 8.1 64-bit
- Windows 10 64-bit
- Windows 10 64-bit
- Windows Server 2016 64-bit
- Windows Server 2019 64-bit
macOS
- macOS 10.13 (High Sierra)以降
アーキテクチャ
セルフホストランナーアプリケーションでは、次のプロセッサアーキテクチャがサポートされています。
x64
- Linux、macOS、Windows。ARM64
- Linux のみ。ARM32
- Linux のみ。
セルフホストランナーとGitHubとの通信
The self-hosted runner polls GitHub to retrieve application updates and to check if any jobs are queued for processing. The self-hosted runner uses a HTTPS long poll that opens a connection to GitHub for 50 seconds, and if no response is received, it then times out and creates a new long poll. アプリケーションは、GitHub Actionsジョブを受け付けて実行するためにマシン上で動作していなければなりません。
下記の GitHub の URL と通信するための適切なネットワークアクセスがマシンにあることを確認する必要があります。
github.com
api.github.com
*.actions.githubusercontent.com
github-releases.githubusercontent.com
github-registry-files.githubusercontent.com
codeload.github.com
*.pkg.github.com
pkg-cache.githubusercontent.com
pkg-containers.githubusercontent.com
pkg-containers-az.githubusercontent.com
GitHub OrganizationあるいはEnterpriseアカウントでIPアドレス許可リストを使うなら、セルフホストランナーのIPアドレスを許可リストに追加しなければなりません。 詳しい情報については「Organizationの許可IPアドレスの管理」あるいは「Enterpriseアカウントでのセキュリティ設定の適用」を参照してください。
セルフホストランナーは、プロキシサーバーと合わせて使うこともできます。 詳しい情報については「セルフホストランナーと合わせてプロキシサーバーを使う」を参照してください。
パブリックリポジトリでのセルフホストランナーのセキュリティ
セルフホストランナーは、プライベートリポジトリでのみ利用することをおすすめします。 これは、ワークフロー中でコードを実行するPull Requestを作成することによって、リポジトリのフォークが危険なコードをセルフホストランナーマシン上で実行できる可能性があるためです。
それぞれのGitHubホストランナーは常にクリーンな隔離された仮想マシンになり、ジョブの実行が終わると破棄されるので、GitHubホストランナーではこれは問題にはなりません。
あなたのセルフホストランナー上で実行される信頼できないワークフローは、あなたのマシンやネットワーク環境に大きなセキュリティリスクをもたらします。これは特に、マシンがジョブにまたがって環境を保持する場合に当てはまります。 リスクには以下のようなものがあります。
- マシン上での悪意あるプログラムの実行
- マシンのランナーのサンドボックスからの脱却
- マシンのネットワーク環境へのアクセスの露出
- 望まないもしくは危険なデータのマシン上への保存