yo-log

@yo-iidaのlog

bitbucket→wercker→herokuでCIをまわす

やりたいこと

  • railsアプリケーションをbitbucketでprivateで管理、masterへのpushもしくはmergeで自動ビルド、herokuにデプロイ
  • 極力タダ

参考にしたもの

Werckerを使ってHerokuにデプロイする

Githubのプライベートリポジトリでも無料で使えるCI、Werckerを使ってrails newからHerokuのデプロイまでやってみる | mah365

bitbucketとwerckerでhubotをherokuに自動deployしてslackに通知する - Qiita

つまったこと

wercker.ymlの書き方がわからない&初回ビルドで落ちる

werckerで新しいアプリケーションを作成すると、リポジトリの連携のあとに、勝手にwercker.ymlをつくってくれるので、それをコピーしておく。

最初コピーせずにスルーしてそのままつくって、あとからネットで調べて拾ってきたてきとうなwercker.ymlを使うとyamlのvalidationエラーになって、通らなかった。

単純にスペースの数だとかyamlの記法に従っていなかっただけだと思うけど、werckerが生成してくれる雛形を使ってそこからカスタマイズしていくのが無難。(英語ちゃんと読めば書いてあるw)

テストで落ちる

これはrails newしたあと、rspecのインストールなどをしていなかったから。rspecの設定は、あらかじめ.rspecとかでやっとくといいでしょう。

RSpecをRailsにインストールする - Qiita

js実行環境で落ちる

`autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

autodetectするのにexecjsがみつからないよと怒られる。

gem 'therubyracer'を追加してやればおk。

あーありがち - Rubyのexecjsがすごい件

デプロイの設定の仕方がわからない

これが一番こまった。なぜなら、参考記事ではwerckerでdeploy targetにherokuを設定しろと書いてあるのに、werckerでherokuが選べないからだ。

f:id:yo-iida:20150726115718p:plain

なんでなのかはあまり調べるのに時間かけたくなかったのでわからないままだったけど、custom deployでherokuの設定ができたのでよかった。

やったこととしては、

  • wercker.ymlにheroku用の設定を書く
  • werckerの環境変数に各値を設定

です。

wercker.ymlのデプロイに関する設定は、

deploy:
    steps:
        - heroku-deploy:
            install-toolbelt: true
            key: $HEROKU_KEY
            user: $HEROKU_USER
            app-name: $HEROKU_APP_NAME

こんなかんじにしておく。

で、werckerの環境変数の設定で上記をそれぞれ設定する。

f:id:yo-iida:20150726120359p:plain

HEROKU_KEYは、herokuのaccount manageの中にあるAPI KEYです。

HEROKU_USERは、ユーザー名(=メールアドレス)。

HEROKU_APP_NAMEは、herokuで動かしているアプリの名前。

んで、デプロイすれば通るはず。

 

0円CIすばらしい!