Github の pull request で jenkins のビルドを走らせる

はてなブログに移転してみたので記事を。

Github 上でソース管理をしていて、 pull request でレビュー・マージを しているケースは業務上でも最近多くなってきていると思われる。

pull request を投げた時点で jenkins でビルドをすれば事前にわかるので マージ後に発覚して失敗するコミットをマージせずに済む。

それを実現できるのが Github pull request builder plugin である。

https://wiki.jenkins-ci.org/display/JENKINS/Github+pull+request+builder+plugin

導入方法は上記URLを見ていただければわかると思う。 これを設定しているジョブが pull request 、追加コミット等のタイミングで 走るようになる。

ただ、ジョブは1つなので分散してテストを実施しないと時間がかかる場合は使いにくい。 分散すれば10分のところを1時間かかる場合もあるからだ。 そこで、さらにプラグインを導入して複数のジョブを子どもに走らせて全て Succes の場合に Success とするように設定する。

それが Multijob Plugin である。

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

これで複数の job をぶら下げて一気にテストすることが可能になる。 難点は、親 job だけで1台使用するので2つの job を並列で走らせる場合は 3台のスレーブが必要になる。親と同じマシンで動かす設定もできるが、その場合は 同時ビルド数を増やす必要がある。そのため、同時ビルドができないプロジェクト ではそのマシンは pull request 専用にする必要がある。