@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Jenkins に bundle update した上で Pull Request させる

皆さん bundle update してますか?ぼくは忙しさにかまけてついサボりがちなのですが先日何ヶ月ぶりかにやってみたらけっこういろんな gem がアップデートしててヒヤリとしました。

bundle update 忘れは今後もまたやってしまいそうだと思い、なにかこれを解決する方法がないか考えたところ、

  • マメにやるのは無理。余裕があればやるけど忙しくなったら忘れる。自分の意識が低くなっても破綻しない仕組みを作るべき
  • 差分が小さくても Pull Request を出すのは悪くない。というか Pull Request は毎日全員が見るし放置されにくい
  • bundle outdated の結果をメールするのもお手軽そうだけど、メールなんてどうせ見ない (pendaxes がいい例で、毎朝メールがきても痛くも痒くもない)

ということで「Jenkins に毎週 bundle update したブランチを push させて、ついでに Pull Request までさせたら全部解決するじゃん」と閃いて雑に実装したところ隣の席のこびとさんもとい @banyan さんが仕上げてくれてこんな感じになりました。

GitHub のタイムライン

f:id:a666666:20121106002617p:plain

Jenkins による Pull Request

f:id:a666666:20121106002622p:plain

まだ始めたばかりだけど捗りそうな予感がします。それ以上に Jenkins のアイコンが GitHub のタイムラインに勝手に流れてくるのを見てるのが bot 萌えとしては非常にワクワクします。

毎週 bundle update とか、たぶん一ヶ月二ヶ月くらいなら自分でやってもそれなりに楽しいと思うんですよ、この gem バージョンあがってるぞ、 Changelog 読んでみようかな、とかね。でもどうせ飽きるし、そもそもこまめにやって都度テストを走らせていれば人間が慎重に判断しなきゃならないほどシビアな状況にはそうそうならないはずで、そんな単純作業を人力でやるのはいろいろもったいないなーと思うのです。

やってることは至極単純で、 post build task で hub pull-request しているだけです。特に問題なさそうなので Jenkins の設定で使っているシェルスクリプトを公開します。

https://gist.github.com/4017686
build.sh

post_build_task.sh

とはいえシェルスクリプトを書くのもだるいので (Gist をコピペすりゃいいんだけど) @banyan が gem か Jenkins プラグインを作る宣言をしていました。乞うご期待です。