読者です 読者をやめる 読者になる 読者になる

( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

Jenkinsで外部パラメータで与えたブランチを対象にビルドできるようにしておくと凄惨性あがって墓ドル

git jenkins

テストが終わるまでの時間で書いてみる。

Jenkinsでジョブを実行させるときに、外部パラメータで任意のブランチを対象にビルドできると墓ドル。

例えば、自分のローカルブランチをマージするまえに、テストが通るか確認したい場合とか。

そんなのローカルでテストすりゃーいいじゃんって言われるかもしれないが、 テスト全部通すのに時間が掛かるようになってると、とりあえずCIに実行を投げておいてあとで確認するほうがずっと効率がいい。


F.Y.I: Building github branches with Jenkins

ジョブの設定

「ビルドのパラメータ化」にチェックをつけて、以下のようにbranchって名前のパラメータを設定しておく。
f:id:yuroyoro:20121220174907p:plain


ソースコード管理システム」で「Branches to build」のところに、設定したパラメータである"$branch"を入れておく。
f:id:yuroyoro:20121220174921p:plain


ジョブの設定は以上。上記の方法はGitの場合だけど、他のVCSでも似たようなことできると思う多分。

ジョブの実行

ビルドを実行したいブランチをpushした上で、「ビルド実行」をクリックするとブランチを入力するように言われるのでよろしくやる。
f:id:yuroyoro:20121220174929p:plain


自分は、ブラウザから実行させるのがタルいので、以下の用にcurlでjenkinsにリクエストを送る事でジョブをkickしている。墓・ドル。

$ curl -v http://<your jenkins host>/job/<job name>/buildWithParameters\?branch\=<branch name>

* About to connect() <your jenkins host> port 80 (#0)
*   Trying <your jenkins ip>... connected
* Connected to <your jenkins host> (192.168.1.171) port 80 (#0)
> GET /job/yuroyoro-build/buildWithParameters?branch=origin/features/ci_test  HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.12.9.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
> Host: <your jenkins host>
> Accept: */*
> 
< HTTP/1.1 302 Found
< Date: Thu, 20 Dec 2012 08:25:55 GMT
< Server: Winstone Servlet Engine v0.9.10
< Location: http://<your jenkins host>/job/yuroyoro-build/
< Content-Length: 0
< X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
< Via: 1.1 <your jenkins host>
< Content-Type: text/plain
< 
* Connection #0 to host <your jenkins host> left intact
* Closing connection #0

注意点として、[branch name]は'origin/features/ci_test'のように指定しないといけない。

実行結果の確認

ジョブの結果は、Growl pluginを利用して通知を受け取るようにしている。墓$。

Jenkinsの通知をGrowlで受け取る - Basic

実行ログは、jenkins.gemを使ってCLIから確認している。'jenkins [job name]'で最新の実行ログを取ってきてくれる。墓。


jenkins | RubyGems.org | your community gem host
cowboyd/jenkins.rb-history · GitHub


こんな感じで、ビルド実行ブランチをパラメータ化しておくことで、いつでも好きなときに、メインラインにマージ前のブランチのテストをCI鯖に任せることが可能になった。
curlとGrowl pluginとjenkins.gemのおかげで、「ジョブ投入 → 終了通知 → 結果確認」をすべてCLI内で完結させることができて、凄惨性あがって墓ドル。