コンテンツへスキップ
Latchkey
無料で始める
ドキュメントメニュー

プロビジョニングの仕組み

GitHub でジョブがキューに入ってからランナーがピックアップするまでに何が起きるか: ウォームプール、ジャストインタイム登録によるコールドスタート、同時実行の上限、そしてジョブが待たされる理由。

GitHub が latchkey-* ラベル付きのジョブをキューに入れると、Webhook が即座に Latchkey に伝え、Latchkey は 1 つの判断を下します: ジョブを既にウォームなランナーに渡すか、そのために新しいマシンを起動するか。あなたがその判断を目にすることはありませんが、それが数秒でのピックアップと約 10 秒でのピックアップの違いであり、このページで扱う内容の大半を説明するものです。

01ジョブがキューに入るGitHub が latchkey-* ラベルを対象とするジョブをキューに入れます
02Webhookジョブがキューに入った瞬間に GitHub が Latchkey に通知します
03スケールアップの判断ウォームランナーがジョブを引き受けるか、新しいマシンが起動します
04ピックアップウォーム: 数秒。コールド: 約 10 秒、ジャストインタイムで登録
05実行して破棄ジョブはマシン上で単独で実行され、マシンはその後終了されます
数秒
ウォームピックアップ
ウォームランナーが利用可能な場合
~10s
コールドスタート
新しいマシン、ジャストインタイム登録
1
VM あたりのジョブ
すべてのランナーはジョブの後に破棄されます
4h
ジョブの上限
マシンは 4 時間で終了されます

ウォームピックアップ vs コールドスタート#

ウォームピックアップ は、事前にプロビジョニングされたランナーがあなたのワークスペース向けに既にオンラインだったことを意味します: ジョブはそのままそのランナーに渡され、数秒以内に開始します。コールドスタート は、適合するウォームランナーがなかったことを意味します: そのジョブのためだけに新しいマシンが起動し、ジャストインタイムの単回使用構成で GitHub に登録し、約 10 秒であなたのステップを実行し始めます。どちらのパスも終わり方は同じです: ランナーは正確に 1 つのジョブを引き受け、ジョブが終了するとマシンは終了されます。

ウォームプール#

プランウォームプール
Developerウォームな latchkey-small ランナー 1 台とパーク済み容量
Launch同じベースライン: ウォームランナー 1 台とパーク済み容量
Scale同じベースライン: ウォームランナー 1 台とパーク済み容量

現在はすべてのプランが同じウォームのベースラインを受け取り、その対象は latchkey-small のみです: 常時オンのウォームランナー 1 台と、数秒で再開するパーク済みマシンです。それを超えるもの、およびより大きなサイズを要求するジョブは、約 10 秒でコールドスタートします。ウォーム容量はアイドル中に何のコストもかかりません。課金はジョブの分単位であり、アイドル状態のウォームランナーはジョブを実行していないからです。

常にエフェメラル#

プロビジョニングがマシンを再利用することは決してありません。ウォームでもコールドでも、ランナーは正確に 1 つのジョブを引き受け、その後ディスクとともに終了されます。GitHub の実行ビューでランナー名が実行ごとに変わるのはこのためであり、ジョブがローカルディスクに書き込んだものがジョブ終了時に消えるのもこのためです。この設計のセキュリティ面、すなわちジャストインタイムの認証情報、プライベートネットワーキング、暗号化された単回使用ディスクについては、セキュリティアーキテクチャ で扱います。

同時実行#

ワークスペースはデフォルトで最大 20 の同時ビジーランナー を実行し、カウントされるのはビジーなランナーだけです: アイドル状態のウォームランナーがスロットを消費することは決してないため、ウォーム容量があなたの実際のジョブと競合することはありません。バーストが一度に 20 を超える場合、あふれたジョブはスロットが空くまでキューに留まり、その後自動的に開始します。何もエラーにならず、何も失われません。ピーク時に定期的にキュー待ちが発生するなら、より高い上限が利用可能です。サポートに連絡してください

ハードな境界#

  • ジョブの上限は 4 時間 です。ジョブがまだ実行中でも、マシンは 4 時間で終了されます。
  • ランナーは x86_64 上の Ubuntu 24.04 LTS のみです: Windows、macOS、arm64、GPU ホストはありません。
  • ランナーは AWS us-east-1 で実行されます。

ディスクサイズやプランごとのカスタム構成数を含む完全な表は、上限と同時実行数 にあります。

ジョブが queued のまま留まる理由#

プロビジョニングがランナーを起動できない、または起動しない場合、GitHub 側にエラーはありません。ジョブはただ待ちます。これは設計によるものです: latchkey-* ラベルを対象とするジョブは、エラーになるのではなく GitHub でキューに留まります。よくある原因:

  • ラベルのタイプミス: どの構成もラベルに一致しないため、何もジョブをピックアップしません。
  • リポジトリが監視されていない、またはランナーの 構成が無効になっている
  • 課金またはトライアルのブロック: 期限切れのトライアル、失効したサブスクリプション、またはカードなしトライアルで使い切った無料ティア。これが起きると "Managed runner blocked" 通知が、1 日に最大 1 回発火します。
  • カスタムランナーのイメージがまだビルド中: そのラベルを対象とするジョブは、ビルドが完了するまで待ちます。
  • ワークスペースが 20 ビジーランナーの上限 に達している: スロットが空き次第、ジョブは開始します。

各原因の確認方法を含む、症状ごとのウォークスルーは トラブルシューティング にあります。

References