注: 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時間以上にわたってキューに残っていたジョブは失敗します。