へなちょこSEの考察

0x1E歳のへなちょこSEが、日々思うことを考察します。自社内、金融系を経て現在法人系PKG開発に従事。

ジョブの並列実行

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分くらいになったので、まぁ許せるレベルになりましたかね。
ジョブの組み方がクリティカルパスの考え方を必要とするとは。