注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。
カスタ� ラベルと既定のラベルの作成については、「セルフホスト ランナーとのラベルの利用」を参照してく� さい。
ワークフローでのセルフホストランナーの利用
ラベルを使うと、セルフホストランナーの共有される特徴に基づき、ワークフローのジョブを特定の種類のセルフホストランナーに送れます。 たとえば、ジョブが特定のハードウェアコンポーネントやソフトウェアパッケージを必要とするなら、カスタ� ラベルをランナーに割り当て、そのラベルを持つランナー上でのみ実行されるようジョブを設定できます。
ジョブにセルフホステッド ランナーを指定するには、ワークフロー ファイルでセルフホステッド ランナーのラベルを使って runs-on を設定します。
すべてのセルフホステッド ランナーに self-hosted ラベルが含まれます。 このラベルのみを使うと、セルフホステッド ランナーが選ばれます。 オペレーティング システ� やアーキテクチャなど、特定の条件を満たすランナーを選ぶには、self-hosted で始まり (リストの最初にこれを示す必要があります)、必要に応じて追� のラベルを含むラベルの配列を指定することをお勧めします。 ラベルの配列を指定すると、指定したラベルをすべて持つランナーのキューにジョブが入れられます。
self-hosted ラベルは必� �ではありませんが、セルフホステッド ランナーを使う� �合は、自分のジョブから現在または将来の GitHub ホスト ランナーが意図せずに指定されないことを確実にするため、それを指定することを強くお勧めします。
詳細については、GitHub Actions のワークフロー構文に関するページを参照してく� さい。
デフォルトラベルを使ったジョブの転送
セルフホストランナーは、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 は、まずリポジトリ レベル、次に組織レベル、次にエンタープライズ レベルでランナーを検索します。
- ジョブは最初にマッチした、オンラインでアイドル状態のランナーに送信されます。
- マッチしたすべてのランナーがビジー� った� �合、ジョブはマッチしたオンラインのランナーが最も多いレベルでキューイングされます。
- マッチしたランナーがすべてオフライン� った� �合、ジョブはマッチしたオフラインのランナーが最も多いレベルでキューイングされます。
- マッチするランナーがどのレベルにもなかった� �合、そのジョブは失敗します。
- 24時間以上にわたってキューに残っていたジョブは失敗します。