CircleCIを使ってみる

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 というところに表示されます。

f:id:rochefort:20150203015401j:plain

あとはgithub の公開鍵を指定してsshするだけです。
30分限定のようですが、これはなかなかいいです。
sudoも使えます。
ときどきCI環境でのみ発生するエラーがあったりするのですが、そんな時の調査にすこぶる役立ちそうです。

その他 badgeについて

公式でshileds.io風のbadgeも用意されていますが、例のごとくサイズが揃っていないので
おとなしくshileds.io のものを使ったほうがきれいに揃っていい感じです。

結論

CircleCIのSSH機能とコンテナによる平行実行はとても良い機能だと思いました。
でもTravisCIはシンプルで機能絞った感じな印象もあります。
結論的には、正直どっちでもいいですね(どちらも素晴らしい)。
両方とも利用は簡単なので、両方使ってみて好きな方選べばいいと思います。