Skip to content
Latchkey

buildオーケストレーションとは? jobとpipelineの調整

buildオーケストレーションは、job、その依存関係、pipeline全体を調整し、作業を正しい順序で正しいマシン上で実行させることです。

数十のjob、依存関係、並列branch、downstream triggerを持つpipelineは、勝手には動きません。buildオーケストレーションは、それらすべてを調整するレイヤーです。今何を実行するか、何を待たせるか、各jobをどこへ送るか、結果がどう流れるかを決めます。これが、jobの寄せ集めと、機能するpipelineの違いです。

オーケストレーターが調整するもの

  • 順序: 依存関係を通じて、どのjobがどのjobより先に走るか。
  • 配置: 各jobをどのエージェントが実行するか。
  • 並列性: 同時に実行できるものは何か。
  • データフロー: job間でoutputやartifactを渡すこと。

グラフのスケジューリング

オーケストレーターは依存関係グラフ (DAG) を読み、各jobの前提条件が終わりエージェントが空くとすぐにそのjobをスケジュールします。すべての順序制約を尊重しつつ、安全な並列性を最大化します。

簡単な例

build -> (lint, test) -> deploy が与えられると、オーケストレーターはbuildを実行し、次にlintとtestを並列で起動し、testが完了したらdeployを実行します。各jobは、実行可能になった時点で空いているエージェントに割り当てられます。

pipelineをまたぐオーケストレーション

オーケストレーションは1つのpipeline内だけのものではありません。downstream pipelineのtrigger、親子構造の調整、プロジェクト間buildの連鎖は、すべてより大きなスケールのオーケストレーションです。

オーケストレーションとキャパシティ

オーケストレーターは、エージェントがある分しか並列実行できません。エージェントが不足すると、実行可能なjobがキューに溜まり、オーケストレーションが停滞します。マネージドrunner (Latchkey) はオンデマンドのキャパシティを供給するため、オーケストレーターの並列計画が実際に並列で実行されます。

重要なポイント

  • buildオーケストレーションは、jobの順序、配置、並列性、データフローを調整します。
  • 依存関係グラフをスケジュールし、安全な並列性を最大化します。
  • pipelineをまたぎ、downstreamや親子のrunを連鎖もさせます。

関連ガイド