CI(継続的インテグレーション)サービスまとめ・14個!では、BitBucketで使えるCIサービスを探していましたが、時が経てば事情は変わり、Githubのプライベートリポジトリで無料で使えるのが必要になったので、前に紹介した「Magnum CI」を試しました。
Magnum CIはプライベートリポジトリがいくつでもなぜか完全無料。Betaとも書いてないけど、アカウント設定にフリープランと記載があるので、将来的に有償プランをやる気はあるようです。
なお、今回はGithubのプライベートリポジトリを使いますが、Magnum CIはBitBucketでも使えます。それだけじゃなく、GitLab、Beanstalk(知らない。AWSのではないらしい)、 自分で立てたgit, mercurial, subversionでも使えます。
今回対象とするプロジェクトはRailsアプリなんですが、以下のようにリポジトリはRailsアプリそのままではありません。リポジトリホームのサブディレクトリのrailsディレクトリがRAILS_HOMEです。
そのせいで設定が多くなってしまっています。普通のRailsアプリなら設定ファイルにほとんど何も書かなくていいです。
repo_home ├── xxx ├── yyy ├── rails └── shippable.yml
さて、設定していきましょう。
ログインして、プロジェクトを作成します。Rubyプロジェクトにしておきます。
初期セットアップのやり方が表示されます。
公開鍵を隠す必要はない気がするが、なんとなく。
web hookのURLとSSHの公開鍵が表示されるので、Githubに設定します。これでGithubにpushするとビルドが走ります。
キャプチャーはないけど、公開鍵もDeploy Keysに追加します。
ビルド設定に進みます。
ここにスクリプトを書くことも.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などにも流せます。
一安心と思いきや、致命的な問題が。。。
ビルドログがネットに公開されてるやん!
自分たちのはもう消してしまいましたが、こんな感じに。コミットメッセージもダタ漏れ。
https://magnum-ci.com/public/8e6f82b13dc3c05f3e53/builds
Google検索にも普通にヒットしてしまう。
プライベートリポジトリで使いたいのにビルドログやコミットログが公開されちゃったら意味ないので、MagnumCIはボツ。
だから無料なのかもしれません。将来の有償プランではここを隠せるとか。
ということで次はもう一つの無料CIサービス「Shippable」を試してみましたので、また記事を書きます。