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がそれをほぼ瞬時にします。
関連ガイド
What Is a Cold Start in CI? The Wait Before Your First StepA cold start is the delay while a fresh runner is provisioned before your job runs. Learn what causes it and…
What Is a Warm Pool? Pre-Booted Runners, Zero WaitA warm pool is a set of pre-booted runners kept ready so jobs start instantly instead of waiting for a cold s…
What Is Runner Scaling Lag? The Delay Before Capacity ArrivesRunner scaling lag is the delay between demand rising and new runners coming online. Learn what causes it and…
What Is a Runner Image? The Template Behind Every RunnerA runner image is the preconfigured disk template a runner boots from, with the OS and preinstalled tools. Le…