Skip to content
Latchkey

runner の label とは?job はどう runner を選ぶのか

runner の label とは、runner に付けられたタグです。job は runs-on を使って一致する label を持つ runner を要求し、これが CI が各 job の行き先を決める仕組みです。

label は CI のルーティング層です。job は「これらの label を持つ runner が必要」と言い、サービスはそれに一致する runner に渡します。label を間違えると、job は存在しない runner を待って永遠にキューに留まることがあります。

label がどう job をルーティングするか

各 runner は label を広告します - self-hostedlinuxx64 のような組み込みのもの、加えて追加する任意のカスタムなもの。job の runs-on は必要な label を列挙し、サービスはそのすべてを持つ runner にのみ job を割り当てます。

組み込み vs カスタムの label

組み込みの label は OS とアーキテクチャを自動的に記述します。カスタムの label は、特定の job を特定のキャパシティにルーティングできます - 例えば ML の job 用の gpu label や、マネージドフリートに job を送るプロバイダーの label。

典型的な不一致の失敗

job がどのオンライン runner も提供していない label を要求すると、「waiting for a runner」で無期限にキューに入ります。タイプミス、廃止された runner、削除された label はすべて、同じキューで止まる症状を生みます。

label と移行

runner プロバイダーの切り替えは、多くの場合 label 変更だけです。runs-on を新しいプロバイダーの label に向ければ、同じワークフローが新しいフリートで実行されます。Latchkey の導入は通常、runs-on の label を差し替えることを意味します。

label の問題のデバッグ

job がキューに留まっているとき、オンラインの runner が実際に広告している label を一覧し、runs-on の要求と比較します。修正はほぼ常に、両者を一致させること - タイプミスの訂正、runner のオンライン化、削除された label の復元です。

重要なポイント

  • runner の label は runner にタグを付け、job が runs-on を通じて要求できるようにします。
  • job は、要求するすべての label を持つ runner でのみ実行されます。
  • どの runner も提供していない label を要求すると、job は無期限にキューに入ります。
  • runner プロバイダーの移行は、多くの場合 runs-on の label 変更だけです。

関連ガイド