メモ
GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。
既定ラベルを使ったジョブの転送
セルフホステッド ランナーは、GitHub Actionsに追加されたときに特定のラベルを自動的に受信します。 それらは、ランナーのオペレーティングシステムとハードウェアプラットフォームを示すために使われます。
-
`self-hosted`: セルフホステッド ランナーに適用される既定のラベル。 -
`linux`、`windows`、または `macOS`: オペレーティング システムに応じて適用されます。 -
`x64`、`ARM`、または `ARM64`: ハードウェア アーキテクチャに応じて適用されます。
ワークフローのYAMLを使って、これらのラベルの組み合わせに対してジョブを送信できます。 この例では、3 つのラベルすべてにマッチするセルフホステッド ランナーが、ジョブを実行する資格を持つことになります。
runs-on: [self-hosted, linux, ARM64]
-
`self-hosted` – セルフホステッド ランナー上でこのジョブを実行します。 -
`linux` – Linux ベースのランナーのみを使います。 -
`ARM64` – ARM64 ハードウェア ベースのランナーのみを使います。
既定ラベルなしでセルフホステッド ランナーを個別に作成するには、作成時に --no-default-labels フラグを渡します。 Actions ランナー コントローラーは複数のラベルをサポートしていません。
カスタムラベルを使ったジョブの転送
カスタムラベルを作成し、セルフホステッド ランナーに割り当てることがいつでもできます。 カスタムラベルを使えば、付けられたラベルに基づいて特定の種類のセルフホステッド ランナーにジョブを送信できるようになります。
たとえば、特定の種類のグラフィック ハードウェアを必要とするジョブがある場合、gpu というカスタム ラベルを作成し、そのハードウェアが組み込まれているランナーに割り当てることができます。 割り当てられたすべてのラベルにマッチするセルフホステッド ランナーが、そのジョブを実行できるようになります。
以下の例は、既定とカスタムのラベルを組み合わせたジョブです。
runs-on: [self-hosted, linux, x64, gpu]
-
`self-hosted` – セルフホステッド ランナー上でこのジョブを実行します。 -
`linux` – Linux ベースのランナーのみを使います。 -
`x64` – x64 ハードウェア ベースのランナーのみを使います。 -
`gpu` – このカスタム ラベルは、GPU ハードウェアが組み込まれたセルフホステッド ランナーに手動で割り当てられました。
これらのラベルは累積的に働くので、このジョブを処理できるセルフホステッド ランナーには、4 つすべてのラベルがなくてはなりません。
グループを使用したジョブのルーティング
この例では、Ubuntu ランナーが ubuntu-runners というグループに追加されています。 runs-on キーは、ubuntu-runners グループ内の使用可能なランナーにジョブを送信します。
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on:
group: ubuntu-runners
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
ラベルとグループを使用したジョブのルーティング
グループとラベルを組み合わせる場合、ランナーはジョブを実行する資格を得るために両方の要件を満たす必要があります。
この例では、ubuntu-runners というランナー グループに、ラベル ubuntu-20.04-16core も割り当てられている Ubuntu ランナーが設定されています。 runs-on キーは group と labels を組み合わせて、ラベルが一致するグループ内の使用可能な任意のランナーにジョブがルーティングされるようにします。
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on:
group: ubuntu-runners
labels: ubuntu-20.04-16core
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v