オリジナル: Splitting a big job into smaller jobs
ビルドは通常繰り返し行うプロセスで、大きなプロジェクトでは、すべてを実行すると軽く数時間かかります。そのようなジョブをHudsonで作成できても、結果がでるまで長い待ち時間ができてしまい、継続インテグレーションの価値が小さくなってしまいます。ここでは、このような問題にうまく対処する手段について述べます。
方針は、大きなビルドを複数のステージに分割することです。ビルドが起動すると各ステージは連続して起動しますが、CPUのパイプライン処理のようにCIのスループットを増やし、ビルドがキューで待機している時間が減少することで、応答時間も減少します。
この場合、先に行われるステージは後のステージにファイルを渡す必要があります。一般的な方法は以下の通りです。
- 先に行われるステージは、ビルドの終了時にすべてのファイルをZIPかTGZ形式のファイルに圧縮する。
- ビルド後の処理でこのZIP/TGZファイルをアーカイブし、ファイル指紋をとり、次のステージを起動するように設定する。
- 次のステージがビルドの最初に、"最新の安定したビルド"リンクからこのアーカイブを取得し、それを展開します。このアーカイブはファイル指紋をまたとるのでそのまま保存しておきます。
- 先に行われたビルドから取得したファイルを使ってビルドを進めます。
- ZIP/TGZファイルのファイル指紋をとることで、これらのステージの流れを関連づけることができます。
2つより多いステージがある場合、これを繰り返します。ときには、この"ZIP/TGZ"ファイルにワークスペースをすべて入れなくてはならないこともあります。そうであれば、次のステージでURL SCMプラグインを使用すれば、この繰り返しを楽にできます。
JENKINS-682 keeps track of an RFE to more explicitly and better support this use case. Please feel free to add yourself to CC, vote, and comment on the issue.
Attachments:
pipeline.png (image/png)