bitbucket→wercker→herokuでCIをまわす
やりたいこと
- railsアプリケーションをbitbucketでprivateで管理、masterへのpushもしくはmergeで自動ビルド、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とかでやっとくといいでしょう。
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。
デプロイの設定の仕方がわからない
これが一番こまった。なぜなら、参考記事ではwerckerでdeploy targetにherokuを設定しろと書いてあるのに、werckerでherokuが選べないからだ。
なんでなのかはあまり調べるのに時間かけたくなかったのでわからないままだったけど、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の環境変数の設定で上記をそれぞれ設定する。
HEROKU_KEYは、herokuのaccount manageの中にあるAPI KEYです。
HEROKU_USERは、ユーザー名(=メールアドレス)。
HEROKU_APP_NAMEは、herokuで動かしているアプリの名前。
んで、デプロイすれば通るはず。
0円CIすばらしい!