Skip to content
Latchkey

GitHub Actions のランナーラベルとは?

ランナーラベルはランナーに付与されたタグです。ジョブは runs-on: でラベルを要求し、作業を適切なマシンへ振り分けます。

多数のランナーが利用可能な状況では、GitHub はジョブとマシンを対応付ける仕組みが必要になります。ラベルがその仕組みです。各ランナーはラベルを持ち、ジョブの runs-on: はそのジョブが要求するラベルを列挙します。

概要

ラベルはランナーに付ける文字列タグで、linuxx64gpu やカスタム名などです。GitHub ホステッドランナーには ubuntu-latest のような組み込みラベルがあり、セルフホステッドランナーはカスタムラベルを追加できます。

Matching labels
jobs:
  gpu-job:
    runs-on: [self-hosted, linux, gpu]
    steps:
      - run: nvidia-smi

仕組み

ジョブは runs-on: に列挙されたすべてのラベルを持つランナーへディスパッチされます。複数のランナーが一致した場合は利用可能ないずれかが選ばれ、どれも一致しなければジョブはキューに留まります。

カスタムラベル

セルフホステッドランナーでは、登録時に arm64high-memory のようなラベルを割り当てて機能を記述します。ジョブはそれらのラベルを列挙することで、そのマシンを利用するよう指定します。

重要な理由

ラベルはワークロードを誘導する手段です。重いビルドは大きなマシンへ、GPU ジョブは GPU ランナーへ振り分けます。ラベルのタイプミスは、ジョブが "no runner matched" のまま延々と残る一般的な原因でもあります。

関連する概念

ラベルはアクセス制御のためにランナーグループと連携し、セルフホステッドランナーや大型ランナーをターゲットにする方法の中心となります。

重要なポイント

  • ラベルはランナーに機能や識別情報のタグを付けます。
  • 照合には runs-on: が必要なラベルをすべて列挙する必要があります。
  • タイプミスがあると、一致するランナーがなくジョブがキューに残ります。

関連ガイド