Skip to content
Latchkey

runnerのプロビジョニングとは?トリガーから準備完了のマシンまで

runnerのプロビジョニングは、jobがトリガーされてからrunnerがそれを実行できる状態になるまでのすべて - launch、boot、register、prepareです。

プロビジョニングはCIのセットアップの税金です。ウォームなrunnerではすでに支払い済みですが、コールドなものでは最初のstepまでの遅延になります。各ステップを知れば、プロビジョニング時間がどこにかかりどう削るかがわかります。

プロビジョニングのステップ

  • Allocate compute - VM、コンテナ、またはpodを起動する。
  • OSをbootし、runnerイメージからサービスを開始する。
  • runnerをCIサービスにregisterする(tokenまたはJIT config)。
  • workspaceをprepareし、jobを開始する。

時間がどこにかかるか

最大のコストはインスタンスのlaunchとOSのbootで、特に大きなイメージで顕著です。registrationは通常速いです。job内の依存関係のセットアップは技術的にはプロビジョニング後ですが、最初の有用な作業までの時間に寄与します。

コールド vs ウォームプロビジョニング

コールドプロビジョニングはjobが到着したときにすべてのステップを実行し、数十秒から数分かかります。ウォームプロビジョニングは遅いステップを事前に行うので、jobはおよそ1秒で準備済みのrunnerをつかみます。warm poolは前払いのプロビジョニングです。

速める方法

より小さいイメージはbootが速く、warm poolはコストを完全に隠し、cacheはjob内のセットアップを短縮します。マネージドプラットフォームはこの3つすべてを調整し、プロビジョニングを開発者にとって事実上見えないものにします。

プロビジョニングが失敗するとき

プロビジョニングはどのステップでも失敗しえます: 容量が利用できない、イメージのpullエラー、あるいはbootするが決してregisterしないrunner。堅牢なプラットフォームはjobを失敗させるのではなく新しい容量でリトライするので、一時的なプロビジョニングの不具合が開発者にとって不安定なビルドのようには見えません。

重要なポイント

  • プロビジョニングはjobを実行できるようrunnerを作成し準備することです。
  • ステップはallocate、boot、register、prepareです。
  • インスタンスのlaunchとOSのbootがコールドプロビジョニング時間の大半を占めます。
  • warm pool、より小さいイメージ、cacheがそれをほぼ瞬時にします。

関連ガイド