githubのCIとしては、自分は大体 Travis CI を使っていましたが、そういえば CircleCI 一度も使ったことがないなと思ったので試しに使ってみました。
TravisCIの気に入っているところ
- 設定も楽(.travis.ymlの記述)
- 自分がforkしたことのあるRuby関連プロジェクトでは大体TravisCI使ってる
- 昔調べた時にCircleCIで複数Rubyのバージョンでのテストができなかった
まぁ、いまのところTravisCIで何も困っていません。。
CircelCIのよさそうなところ
Travis CIとCircleCIの比較まとめ。aptが使えるTravisが現状ベター | nanapi TechBlog
こちらを見て、ssh できるってところがかなり気になります。
あとはTravisCIよりHigh Performance そうだというのも気になります。
rvm - Circle CIで複数Rubyバージョンを平行してテストする - Qiita
もう少し調べてみると、コンテナ複数立ち上げることで複数バージョンのRubyのテストもできることがわかりました。
Ruby2.0.0、2.1.0、2.2.0 のcircle.ymlの書き方はこんな感じ。
# circle.yml dependencies: pre: - case $CIRCLE_NODE_INDEX in 0) rvm use 2.0.0 --default ;; 1) rvm use 2.1.0 --default ;; 2) rvm use 2.2.0 --default ;; esac test: override: - ruby -v ; bundle exec rspec: {parallel: true}
使ってみる
ちょうど、ライブラリのversion upやら、リファクタリングを終えたgem( rochefort/gem-search )があったので、CircleCIを試してみました。
githubのプロジェクトなら簡単です。ログインしてproject選択してcircle.yml を記述するだけ。
(複数のRubyのCIを実行するにはコンテナの設定が必要です。)
まぁまぁいい感じに動いてくれます。小さいgemなので速度はあんまり変わりません。
SSH !!
SSH access to builds - CircleCI
公式の通りに、enable ssh ボタンを押すと
buildの準備が始まり、コンテナの接続先がSSH Info というところに表示されます。
あとはgithub の公開鍵を指定してsshするだけです。
30分限定のようですが、これはなかなかいいです。
sudoも使えます。
ときどきCI環境でのみ発生するエラーがあったりするのですが、そんな時の調査にすこぶる役立ちそうです。
その他 badgeについて
公式でshileds.io風のbadgeも用意されていますが、例のごとくサイズが揃っていないので
おとなしくshileds.io のものを使ったほうがきれいに揃っていい感じです。
結論
CircleCIのSSH機能とコンテナによる平行実行はとても良い機能だと思いました。
でもTravisCIはシンプルで機能絞った感じな印象もあります。
結論的には、正直どっちでもいいですね(どちらも素晴らしい)。
両方とも利用は簡単なので、両方使ってみて好きな方選べばいいと思います。