Jenkinsでパラメータ付ビルドでブランチ指定出来るようにしつつ、GithubのHookも受け付けられるようにする
Jenkinsのパラメータ付ビルドで、ブランチを指定できるようにすると墓ドルわけですが、これで困るのが、Githubのhookを上手く受け付けられなくなってしまうこと。
GithubのHook用の中継サーバーを立てれば解決できるなーとは思っていてなんとなくやっていなかったのだが、先日、@hisaichi5518とグリーンで飲んだ時に正しく全く同じ問題意識を抱えていたことが判明して、これはどうにかしないといけないと思い何とかした。
テストまわすために空コミット、虚しさがある。
— ひさいち (@hisaichi5518) 2014, 4月 16
まず、Github止まりで中途半端に放置していた、Github::Hooks::Receiverを大幅にインターフェースを変更してCPANizeした。
それを使って以下の様なサーバースクリプトを書いた。Hookを受け取って、パラメータを組み立てて、Jenkinsに投げてくれるだけの人です。
なんか、pushイベントはブランチのdeleteをpushした時とかも飛んでくるので、コミットがないときは無視したりしている。
下のスクリプトはIRC botスクリプトでこいつを起動しておいて、unazu_san: ci branch/name
とか話しかけると、テスト実行してくれて、パラメータ付ビルドが墓ドル。
中継サーバーは、topicブランチは自動的にテストを回さず、必要に応じてIRCから担当者が回すとかでも良いかもしれない。その辺自由に書き換えられると思います。
半年前くらいから出来るなーとか思いつつ棚上げしてたけど、いざやってみると小一時間でできたというよくある話だった。飲ミュニケーション大事!
グリーン最高
— ひさいち (@hisaichi5518) 2014, 4月 14
Github::Hooks::Receiverは@hisaichi5518がRubyに移植してくれたみたいで同じようなことをRubyでも簡単に実現できます。