ビルドキューとは何か?ジョブがランナーを待つ場所
ビルドキューとは、利用可能なエージェントを待つジョブの列であり、ジョブは実行できるだけのキャパシティが空くまでそこに留まります。
実行するエージェントよりも準備完了のジョブが多い場合、余ったジョブはキューで待機します。キュー時間は純粋な待機です。何の作業も進みませんが、パイプラインの時計は動き続けます。「たった5分」で終わるはずのパイプラインが戻ってくるまでに20分かかることがあるのは、キューを理解することが鍵となります。
なぜキューが形成されるのか
キューは需要がキャパシティを超えるたびに形成されます。プッシュの集中、大きなmatrix、あるいは1日のうちの混雑した時間帯はいずれもジョブをキューに入れる可能性があります。ジョブは準備完了ですが、すべてのエージェントがビジーなので順番を待ちます。
キュー時間 vs 実行時間
- キュー時間: エージェントを待つ時間(作業は行われない)。
- 実行時間: エージェントが実際にstepを実行する時間。
- 開発者が体感する合計時間 = キュー時間 + 実行時間。
簡単な例
10人の開発者が午前9時にプッシュし、あなたにはエージェントが5つあります。5つのジョブは即座に実行され、残りの5つは最初のバッチが終わるまでキューに入ります。キュー内の各ジョブの報告される所要時間は短く見えますが、待機は実在したのです。
キューの短縮
キューを短縮するには、キャパシティを追加するか、ジョブをより速く終わらせる(エージェントがより早く解放される)か、冗長なジョブを減らします。autoscalingは負荷時にエージェントを追加し、concurrency制限や古い実行のキャンセルは需要を減らします。
マネージドランナーでのキュー
キュー時間は、最もフラストレーションが溜まり、最も見えにくいCIコストの1つです。マネージドランナー(Latchkey)はウォームプールを維持して素早くスケールアップするため、ジョブの集中はキューでの待機時間がほとんど、あるいは全くない状態で実行を開始します。
重要なポイント
- ビルドキューは、準備完了だが空きエージェントを待っているジョブを保持します。
- キュー時間は純粋な待機であり、開発者が体感するパイプライン時間に加算されます。
- キューを短縮するには、キャパシティを追加し、ジョブを高速化し、冗長な実行を削減します。
関連ガイド
What Is a Build Agent? The Machine That Runs Your JobsA build agent is the machine, container, or VM that picks up a job from the CI server and executes it. Learn…
What Is a Pipeline Run? One Execution of a PipelineA pipeline run is a single execution of a pipeline triggered by an event, with its own jobs, logs, status, an…
What Is Build Orchestration? Coordinating Jobs and PipelinesBuild orchestration is the coordination of jobs, dependencies, and pipelines so work runs in the right order…