ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

ワークフローでのセルフホストランナーの利用

ワークフローでセルフホストランナーを使うには、ラベルを使ってジョブのためのランナーの種類を指定できます。

ここには以下の内容があります:

GitHub Actions の支払いを管理する GitHubは、macOSランナーのホストにMacStadiumを使用しています。

カスタム及びデフォルトラベルの作成に関する情報については「セルフホストランナーでのラベルの利用」を参照してください。

ワークフローでのセルフホストランナーの利用

ラベルを使うと、セルフホストランナーの共有される特徴に基づき、ワークフローのジョブを特定の種類のセルフホストランナーに送れます。 たとえば、ジョブが特定のハードウェアコンポーネントやソフトウェアパッケージを必要とするなら、カスタムラベルをランナーに割り当て、そのラベルを持つランナー上でのみ実行されるようジョブを設定できます。

ジョブでセルフホストランナーを指定するには、ワークフローファイル中でセルフホストランナーのラベルでruns-onを設定してください。

すべてのセルフホストランナーはself-hostedラベルを持ち、self-hostedラベルだけを提供すれば任意のセルフホストランナーを選択できます。 あるいは、特定のオペレーティングシステムやシステムアーキテクチャのラベルといった追加のラベルと合わせて配列中でself-hostedを使い、指定した種類のランナーだけを選択することもできます。

詳細については、「GitHub Actionsのワークフロー構文」を参照してください。

デフォルトラベルを使ったジョブの転送

セルフホストランナーは、GitHub Actionsに追加されたときに特定のラベルを自動的に受信します。 それらは、ランナーのオペレーティングシステムとハードウェアプラットフォームを示すために使われます。

  • self-hosted: セルフホストランナーに適用されるデフォルトのラベル。
  • linuxwindowsmacOS: オペレーティングシステムに基づいて適用されます。
  • x86x64ARMARM64: ハードウェアアーキテクチャに基づいて適用されます。

ワークフローの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つすべてのラベルがマッチしていなければなりません。

セルフホストランナーのルーティングの優先順位

リポジトリレベルと Organization レベルの両方のランナーを使用する場合、GitHub は、次の優先順位に従ってジョブをセルフホストランナーにルーティングします。

  1. ジョブの runs-on ラベルが処理されます。 次に、GitHub は、ラベル要件に一致するランナーを検索します。
  2. ジョブは、ジョブラベルに一致するリポジトリレベルのランナーに送信されます。 リポジトリレベルのランナーが利用できない(ビジー、オフライン、または一致するラベルがない)場合:
  3. ジョブは、ジョブラベルに一致する Organization レベルのランナーに送信されます。 Organization レベルのランナーが利用できない場合、ジョブ要求はエラーで失敗します。

Did this doc help you?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.