ジョブの並列実行

Jenkinsさんの仕事がどうにも時間がかかるので、並列実行させることにしました。

これまでのジョブはこんな感じ。



[ビルド前]




  1. CVSチェックアウト

[ant(build.xml)]




  1. コンパイル

  2. Findbugs解析

  3. Checkstyle解析

  4. CPD解析

  5. WARファイル作成

[ビルド後]




  1. Findbugs解析結果XML集計

  2. Checkstyle解析結果XML集計

  3. CPD解析結果XML集計

  4. コンパイル警告集計

  5. StepCount



全部終わるまでには一時間強かかっていました。

これじゃあちょっと実用レベルではないので、並列化を実施。



<メインビルドジョブ>

[ビルド前]




  1. CVSチェックアウト

[ant(build.xml)]




  1. コンパイル

  2. WARファイル作成

[ビルド後]




  1. コンパイル警告集計

  2. StepCount



��FindBugsジョブ>

[ant(build.xml)]




  1. Findbugs解析

[ビルド後]




  1. Findbugs解析結果XML集計



��CheckStyleジョブ>

[ant(build.xml)]




  1. Checkstyle解析

[ビルド後]




  1. Checkstyle解析結果XML集計

<CPDジョブ>

[ant(build.xml)]




  1. CPD解析

[ビルド後]




  1. CPD解析結果XML集計

で、メインジョブの後続(下流プロジェクト)としてFindBugsCheckStyle、CPDを呼ぶようにしました。

が、想定ほどは早くならず。

というのも、CPDに時間がかかりすぎてて、そもそもこいつを何とかしないと早くならないという状態・・・・。

正直、あんまり活用できそうにないし、CPDは外しておこうかなぁ。



とりあえず、今回はジョブの並列実行に成功したのでよしとします。





<2012/12/13追記>

もうちょっと調整して、当初の半分くらいの時間にはなりました。

CPDはソースさえあればいいので、コンパイルをFindBugsのジョブの中に入れてコンパイル前にCPDを起動してしまうようにしたら、10分ほど短縮。

30分くらいになったので、まぁ許せるレベルになりましたかね。

ジョブの組み方がクリティカルパスの考え方を必要とするとは。



コメント

人気の投稿