注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。
ワークフローで使用するセルフホスト ランナーをターゲットにするには、ランナーに割り当てられたラベル。
セルフホストランナーのラベルについて
ラベルを使うと、セルフホストランナーの共有される特徴に基づき、ワークフローのジョブを特定の種類のセルフホストランナーに送れます。 たとえば、ジョブが特定のハードウェアコンポーネントやソフトウェアパッケージを必要とするなら、カスタムラベルをランナーに割り当て、そのラベルを持つランナー上でのみ実行されるようジョブを設定できます。
ジョブにセルフホステッド ランナーを指定するには、ワークフロー ファイルでセルフホステッド ランナーのラベルを使って runs-on
を設定します。
すべてのセルフホステッド ランナーに self-hosted
ラベルが含まれます。 このラベルのみを使うと、セルフホステッド ランナーが選ばれます。 オペレーティング システムやアーキテクチャなど、特定の条件を満たすランナーを選ぶには、self-hosted
で始まり (リストの最初にこれを示す必要があります)、必要に応じて追加のラベルを含むラベルの配列を指定することをお勧めします。 ラベルの配列を指定すると、指定したラベルをすべて持つランナーのキューにジョブが入れられます。
self-hosted
ラベルは必須ではありませんが、セルフホステッド ランナーを使う場合は、自分のジョブから現在または将来の GitHub ホスト ランナーが意図せずに指定されないことを確実にするため、それを指定することを強くお勧めします。
カスタム ラベルと既定のラベルの作成については、「セルフホストランナーとのラベルの利用」を参照してください。
デフォルトラベルを使ったジョブの転送
セルフホストランナーは、GitHub Actionsに追加されたときに特定のラベルを自動的に受信します。 それらは、ランナーのオペレーティングシステムとハードウェアプラットフォームを示すために使われます。
self-hosted
: すべてのセルフホステッド ランナーに適用される既定のラベル。linux
、windows
、またはmacOS
: オペレーティング システムに応じて適用されます。x64
、ARM
、またはARM64
: ハードウェア アーキテクチャに応じて適用されます。
ワークフローのYAMLを使って、これらのラベルの組み合わせに対してジョブを送信できます。 この例では、3つのラベルすべてにマッチするセルフホストランナーが、ジョブを実行する資格を持つことになります。
runs-on: [self-hosted, linux, ARM64]
self-hosted
- セルフホステッド ランナー上でこのジョブを実行します。linux
- Linux ベースのランナーのみを使います。ARM64
- ARM64 ハードウェア ベースのランナーのみを使います。
デフォルトラベルは固定されており、変更や削除はできません。 ジョブの転送をもっと制御する必要がある場合は、カスタムラベルの利用を検討してください。
カスタムラベルを使ったジョブの転送
カスタムラベルを作成し、セルフホストランナーに割り当てることがいつでもできます。 カスタムラベルを使えば、付けられたラベルに基づいて特定の種類のセルフホストランナーにジョブを送信できるようになります。
たとえば、特定の種類のグラフィック ハードウェアを必要とするジョブがある場合、gpu
というカスタム ラベルを作成し、そのハードウェアが組み込まれているランナーに割り当てることができます。 割り当てられたすべてのラベルにマッチするセルフホストランナーが、そのジョブを実行できるようになります。
以下の例は、デフォルトとカスタムのラベルを組み合わせたジョブです。
runs-on: [self-hosted, linux, x64, gpu]
self-hosted
- セルフホステッド ランナー上でこのジョブを実行します。linux
- Linux ベースのランナーのみを使います。x64
- x64 ハードウェア ベースのランナーのみを使います。gpu
- このカスタム ラベルは、GPU ハードウェアが組み込まれたセルフホステッド ランナーに手動で割り当てられました。
これらのラベルは累積的に働くので、このジョブを処理できるセルフホスト ランナーには、4 つすべてのラベルがなくてはなりません。
セルフホストランナーのルーティングの優先順位
ジョブをセルフホステッド ランナーにルーティングする際に、GitHub ではジョブの runs-on
ラベルと一致するランナーを探します。
- GitHub によって、ジョブの
runs-on
ラベル に一致するオンラインおよびアイドル状態のランナーが検出された場合は、そのランナーに、該当するジョブが割り当てられて送信されます。- 割り当てられたジョブをランナーが 60 秒以内に取得しない場合、新しいランナーが受け入れることができるように、ジョブはキューに再格納されます。
- GitHub によって、ジョブの
runs-on
ラベル と一致するオンラインおよびアイドル状態のランナーが検出されない場合は、ランナーがオンラインになるまで、ジョブはキューに格納されたままになります。 - 24時間以上にわたってキューに残っていたジョブは失敗します。