概要
jobs.<job_id>.runs-on
を使って、ジョブを実行するマシンの種類を定義します。
- 宛先マシンには 、GitHubホステッド ランナー、より大きなランナー、またはセルフホステッド ランナーのいずれかを指定できます。 - ランナーに割り当てられたラベル、またはそのグループ メンバーシップ、またはこれらの組み合わせに基づいてランナーをターゲットにすることができます。
-
runs-on
は次として指定できます。- 1 つの文字列
- 文字列を含む 1 つの変数
- 文字列の配列、文字列を含む変数、または両方の組み合わせ
group
またはlabels
キーを使用するkey: value
ペア
-
文字列または変数の配列を指定すると、指定された
runs-on
値の全部に一致するランナー上でワークフローが実行されます。 たとえば、ここでは、ラベルlinux
、x64
、gpu
が付いているセルフホステッド ランナー上でのみジョブが実行されます。runs-on: [self-hosted, linux, x64, gpu]
詳細については、「セルフホステッド ランナーの選択」を参照してください。
-
配列内で文字列と変数を混在させることができます。 次に例を示します。
on: workflow_dispatch: inputs: chosen-os: required: true type: choice options: - Ubuntu - macOS jobs: test: runs-on: [self-hosted, "${{ inputs.chosen-os }}"] steps: - run: echo Hello world!
-
複数のマシンでワークフローを実行する場合は、
jobs.<job_id>.strategy
を使います。
Note
引用符は、self-hosted
のような単純な文字列には必要ありませんが、"${{ inputs.chosen-os }}"
のような式には必要です。
GitHub ホステッド ランナーの選択
GitHub ホステッド ランナーを使うと、各ジョブは runs-on
で指定したランナー イメージの新しいインスタンスで実行されます。
GitHub ホステッド ランナーを使用している場合の runs-on の値は、ランナー ラベルまたはランナー グループの名前が指定されます。 標準の GitHub ホステッド ランナーのラベルを次の表に示します。
詳しくは、「GitHub ホステッド ランナーの概要」を参照してください。
パブリック リポジトリの標準の GitHub でホストされたランナー
パブリック リポジトリの場合、次の表に示すワークフロー ラベルを使用するジョブは、関連付けられた仕様を持つ仮想マシンで実行されます。 パブリック リポジトリでのこれらのランナーの使用は無料で無制限です。
仮想マシン | プロセッサ (CPU) | メモリ(RAM) | ストレージ (SSD) | ワークフロー ラベル |
---|---|---|---|---|
Linux | 4 | 16 GB | 14 GB | ubuntu-latest 、ubuntu-24.04 、ubuntu-22.04 、ubuntu-20.04 |
Windows | 4 | 16 GB | 14 GB | windows-latest 、windows-2022 、windows-2019 |
macOS | 4 | 14 GB | 14 GB |
macos-13
|
macOS | 3 (M1) | 7 GB | 14 GB |
macos-latest 、macos-14 、macos-15 [パブリック プレビュー] |
プライベート リポジトリの標準の GitHub でホストされたランナー
プライベート リポジトリの場合、次の表に示すワークフロー ラベルを使用するジョブは、関連付けられた仕様を持つ仮想マシンで実行されます。 これらのランナーは、GitHub アカウントの無料の分の割り当てを使用し、分単位の料金で課金されます。 詳しくは、「GitHub Actions の課金について」を参照してください。
仮想マシン | プロセッサ (CPU) | メモリ(RAM) | ストレージ (SSD) | ワークフロー ラベル |
---|---|---|---|---|
Linux | 2 | 7 GB | 14 GB | ubuntu-latest 、ubuntu-24.04 、ubuntu-22.04 、ubuntu-20.04 |
Windows | 2 | 7 GB | 14 GB | windows-latest 、windows-2022 、windows-2019 |
macOS | 4 | 14 GB | 14 GB |
macos-13
|
macOS | 3 (M1) | 7 GB | 14 GB |
macos-latest 、macos-14 、macos-15 [パブリック プレビュー] |
標準の GitHub ホステッド ランナーに加えて、GitHub では、GitHub Team プランとGitHub Enterprise Cloud プランのお客様に、より多くのコアとディスク領域、GPU 搭載マシン、ARM 搭載マシンなどの高度な機能を備えたさまざまなマネージド仮想マシンを用意しています。 詳しくは、「より大きなランナーの概要」を参照してください。
Note
-latest
ランナー イメージは、GitHub が提供する最新の安定したイメージであり、オペレーティング システム ベンダーから入手できるオペレーティング システムの最新バージョンではない可能性があります。
Warning
ベータ版および非推奨のイメージは、"現状のまま"、"保証なし"、"利用可能な状態" で提供され、サービス レベル アグリーメントと保証から除外されます。 ベータ版のイメージは、カスタマー サポートでカバーされない場合があります。
例: オペレーティング システムの指定
runs-on: ubuntu-latest
詳しくは、「GitHub ホステッド ランナーの使用」を参照してください。
セルフホステッド ランナーの選択
ジョブにセルフホステッド ランナーを指定するには、ワークフロー ファイルでセルフホステッド ランナーのラベルを使って runs-on
を設定します。
セルフホステッド ランナーには self-hosted
ラベルが付いている場合があります。 セルフホステッド ランナーを設定すると、既定では self-hosted
ラベルが付与されます。 --no-default-labels
フラグを渡すことでセルフホステッド ラベルが適用されないように設定できます。 ラベルを使用すると、オペレーティング システムやアーキテクチャなど、特定のランナーを探すオプションを作成できます。self-hosted
で始まり (リストの最初にこれを示す必要があります)、必要に応じて追加のラベルを含むラベルの配列を指定することをお勧めします。 ラベルの配列を指定すると、指定したラベルをすべて持つランナーのキューにジョブが入れられます。
Action-runner-controller は複数のラベルには対応していません。また、self-hosted
ラベルにも対応していない点にご注意ください。
例: ランナー選択のためのラベルの使用
runs-on: [self-hosted, linux]
詳細については、「自己ホスト ランナーの概要」および「ワークフローでのセルフホストランナーの利用」を参照してください。
グループ内のランナーを選ぶ
runs-on
を使用してランナー グループをターゲットにして、そのグループのメンバーである任意のランナーでジョブが実行されるようにすることができます。 よりきめ細かく制御するには、ランナー グループとラベルを組み合わせることもできます。
ランナー グループは、より大きなランナー またはセルフホステッド ランナーのみをメンバーとして持つことができます。
例: グループを使用してジョブの実行場所を制御する
この例では、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@v4
- 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@v4
- uses: actions/setup-node@v4
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v