Skip to content
Latchkey

build serverとは? pipelineの背後にある頭脳

build serverは、pipelineをスケジュールし、jobをエージェントに割り当て、結果を保存し、ステータスをチームに提示する中心的なシステムです。

すべてのpipelineの背後には、コーディネーターがいます。build server (CI serverと呼ばれることもあります) がその頭脳です。eventを監視し、どのpipelineを実行するか判断し、jobをエージェントに配り、結果とログを収集し、全員にステータスを示します。serverは通常jobのstepそのものは実行しません。それはエージェントの役割です。serverは調整します。

build serverがすること

  • eventとtriggerをリッスンする。
  • pipeline runとそのjobをスケジュールする。
  • 利用可能なエージェントにjobをディスパッチする。
  • ログ、結果、artifactを保存する。
  • dashboard、badge、通知を提供する。

server vs エージェント

serverは調整し、エージェントが実行します。1つのserverが多数のエージェントを管理します。この分離により、実行 (エージェントの追加) を調整 (server) とは独立にスケールできます。これが大規模なCIシステムが数千のjobを扱う方法です。

簡単な例

コードをpushすると、build serverがeventを受け取り、runを作成し、そのjobをアイドル状態のエージェントに割り当てます。エージェントがログと結果をストリームで返すと、serverはUIに表示されるrunのステータスを更新します。

セルフホスト vs マネージド

自分のbuild serverを運用する (Jenkinsが定番の例) こともできますし、マネージドのもの (GitHub Actions、GitLab CI) を使うこともできます。セルフホストは制御と保守の負担を与え、マネージドは保守をプロバイダーに肩代わりさせます。

server、エージェント、そして速度

serverは素早くスケジュールしますが、スループットは利用可能なエージェントに依存します。有能なserverもエージェントが不足すれば作業をキューに溜めます。マネージドrunner (Latchkey) はエージェントのキャパシティを提供するため、serverのスケジュールがキューではなく実際の並列実行になります。

重要なポイント

  • build serverはpipelineをスケジュールしエージェントを調整しますが、stepは実行しません。
  • serverは調整し、エージェントが実行します。1つのserverが多数のエージェントを動かします。
  • スループットは、serverのスケジューリングだけでなく、エージェントのキャパシティに依存します。

関連ガイド