Gem を作った

[2015-01-25-1] のバージョンアップ。

個人、会社含めて、複数リポジトリで継続的 bundle update を始めて一ヶ月。汎用コードを Gem に外出ししました。

circleci-bundle-update-pr | RubyGems.org | your community gem host

circle.yml で完結できるのでなかなか良さげです。ただし [2015-01-25-1] のスクリプト部分を Gem 化しただけで、テストもなく、名前が安直です。でもとりあえず動いています。

変更前後をご覧になると分かりますが、deployment で circleci-bundle-update-pr を呼ぶだけで良くなりました。

compare_linker とも依存を付けたので、できるだけ diff へのリンクを貼ってくれます。

継続的bundle update PR

トリガーは [2015-01-25-1] で紹介した ci-build-trigger をどうぞ。Heroku ボタンで簡単に設置できます。

継続的 bundle update を始めて良いことだらけです。まずは小さなプロジェクトから始めてみてはいかがでしょうか?

  • 一週間でもそこそこ更新があることが分かる
  • でもそんなに多くないから、気になった Gem の diff は読む気になる
  • 思っていたよりテスト通らない。でも小さいからすぐ直せる
  • 無意識だった bundle update しなくちゃという心理的負担がなくなった

おまけ1

circleci-bundle-update-pr で compare_linker を使う ため、@kyanny さんから compare_linker のリリース許可を頂きました。kyanny/compare_linker#31 にそのやりとりが残されています。

※ gemspec で依存を付ける Gem の source は github や git が使えなかったのですね。今回初めて知りました。よく考えれば当たり前か。

おまけ2

circle.yml で test.override の途中などで抜けたいときは return でなくて、exit します。サーバの CI ではもっとロジックが多くて、以下のようなコードがたくさん並びます。ださいけど今は仕方がない。

override:
  - |
    if [ -n "${BUNDLE_UPDATE}" ]; then
      exit 0
    fi
    bundle exec rake spec:ec2    

追記(2015-08-29):

保存版の記事 [2015-07-28-1] を書きました。