Travis CIはお値段が高いよねってことでCircleCIを試してみます。
われわれのアプリはもちろんRuby on Railsです。
まずは登録
弊社のGithubチームが管理しているリポジトリの一覧がでました。どうやら管理者に承認もらわないといけないようです。Contact repo adminを押して、別ルートでも社内の管理者に承認をお願いしました。
無事登録完了。
これだけでCIがはじまります
なにも設定とかしてませんが、Githubにプッシュするだけでビルド〜テストが実行されます。まあでもいきなりオールグリーンとか期待してませんよええ。
bundle installで失敗しているようです。どうやらgem byebugがインストールできない模様。われわれはRuby2.2.0をつかっているのですが、CircleCIのデフォルト環境では1.9.xみたいです。
circle.yml
ここではじめてCircleCI設定ファイルを書くことになりました。プロジェクトディレクトリの直下に circle.yml を設置します。
machine:
timezone:
Asia/Tokyo
ruby:
version: 2.2.0
内容はこれだけ。これにより bundle install
はクリアしました。ですが……
謎の失敗
bundle exec rake db:create db:schema:load --trace
のところでFailします。
ビルド後のVMにsshできるようにするという手動ボタンがあるので、これを押し、当然おなじ場所でFailした後にsshしてみます。
すると、テーブルはつくれているし rails console
もちゃんと起動します。
謎。
いったん諦めました……。
と思ったら、翌日
Circleの中の人からメールがきました。いえ、こちらからは問い合わせてないんです。どうやらFailedが連続しているのを検知して、能動的サポートをしてくれたようです。ワンダホー!
というわけで、そうなんだよオレもどうしたもんかわかんないんだよ、って返事したところ、さっそく別の担当者が返信くれました。
曰く、
db:load のなかでminitestが動いちゃってるけどマズイよね、変なとこでrequireしてない?
!!!!
Gemfileをみたら……
group :test do
gem 'minitest'
gem 'minitest-rails'
gem 'minitest-doc_reporter'
gem 'minitest-stub_any_instance'
gem 'minitest-bang'
gem 'minitest-line'
gem 'factory_girl_rails'
gem 'json_expressions'
end
Oh…
そんなわけで
group :test do
gem 'minitest', require: false
gem 'minitest-rails', require: false
gem 'minitest-doc_reporter', require: false
gem 'minitest-stub_any_instance', require: false
gem 'minitest-bang', require: false
gem 'minitest-line', require: false
gem 'factory_girl_rails', require: false
gem 'json_expressions', require: false
end
こうしたら、
/(^o^)\
本当はこの間、npm test
だの gulp test
だのの問題もあったのですが、それはまた別の機会に書きます。