atskimura-memo

あまり仕事とは関係なく適当に書きます。開発ネタが多いかもしれません。

プライベートリポジトリ無料のCIサービス「Magnum CI」を使ってみた

CI(継続的インテグレーション)サービスまとめ・14個!では、BitBucketで使えるCIサービスを探していましたが、時が経てば事情は変わり、Githubのプライベートリポジトリで無料で使えるのが必要になったので、前に紹介した「Magnum CI」を試しました。
Magnum CIはプライベートリポジトリがいくつでもなぜか完全無料。Betaとも書いてないけど、アカウント設定にフリープランと記載があるので、将来的に有償プランをやる気はあるようです。

f:id:a_kimura:20140206170933j:plain

なお、今回はGithubのプライベートリポジトリを使いますが、Magnum CIはBitBucketでも使えます。それだけじゃなく、GitLabBeanstalk(知らない。AWSのではないらしい)、 自分で立てたgit, mercurial, subversionでも使えます。

今回対象とするプロジェクトはRailsアプリなんですが、以下のようにリポジトリはRailsアプリそのままではありません。リポジトリホームのサブディレクトリのrailsディレクトリがRAILS_HOMEです。
そのせいで設定が多くなってしまっています。普通のRailsアプリなら設定ファイルにほとんど何も書かなくていいです。

repo_home
├── xxx
├── yyy
├── rails
└── shippable.yml

さて、設定していきましょう。

ログインして、プロジェクトを作成します。Rubyプロジェクトにしておきます。

f:id:a_kimura:20140305000008j:plain

初期セットアップのやり方が表示されます。
公開鍵を隠す必要はない気がするが、なんとなく。

f:id:a_kimura:20140305000103j:plain

web hookのURLとSSHの公開鍵が表示されるので、Githubに設定します。これでGithubにpushするとビルドが走ります。
キャプチャーはないけど、公開鍵もDeploy Keysに追加します。

f:id:a_kimura:20140305000404p:plain

ビルド設定に進みます。

f:id:a_kimura:20140305000725j:plain

ここにスクリプトを書くことも.magnum.ymlという設定ファイルに書いてgitに入れることもできます。
画面でスクリプトを書いて手動実行してちゃんと動くスクリプトを作ってから、.magnum.ymlに書いてpushするのがいいんじゃないかと思います。

.magnum.ymlはこんな感じ。
PostgreSQLの場合は、RAILS_ENV=testのときのユーザをpostgres、パスワードなしにしておけばrake db:createでDBが作成できます。
なお、普通のRailsアプリそのままのリポジトリだったらたぶん何も書かなくても自動で実行してくれます。(詳しくはこちら

ruby: 2.1.0

before_install:
  - cd rails

install:
  - bundle install --path=vendor/bundle

before_script:
  - bundle exec rake db:create
  - bundle exec rake db:migrate RAILS_ENV=test

script:
  - bundle exec rspec spec/

動いた動いた。通知はHipChatなどにも流せます。

f:id:a_kimura:20140305002552j:plain

一安心と思いきや、致命的な問題が。。。
ビルドログがネットに公開されてるやん!

自分たちのはもう消してしまいましたが、こんな感じに。コミットメッセージもダタ漏れ。
https://magnum-ci.com/public/8e6f82b13dc3c05f3e53/builds

Google検索にも普通にヒットしてしまう。

プライベートリポジトリで使いたいのにビルドログやコミットログが公開されちゃったら意味ないので、MagnumCIはボツ。
だから無料なのかもしれません。将来の有償プランではここを隠せるとか。

ということで次はもう一つの無料CIサービス「Shippable」を試してみましたので、また記事を書きます。


Magnum CI