はじめに
- werckerを使うとリモートリポジトリに変更がpushされた時点でビルド/デプロイが自動で走らせることができます
- 無料で利用できます
-
こちらのサイトに詳しく書いてあります、非常に参考になりました
- 私はさぐりさぐりで半日かかりましたが、本Qiita記事を見れば30分〜1時間程で体験は出来ると思います
事前準備
必要な作業
- githubにRailsアプリをあげておく
- werckerでCIするアプリケーションを登録
- Herokuアプリの作成
- werckerでデプロイの設定
- wercker.ymlを編集
- いざ、git push
githubにRailsアプリをあげておく
- 私は以下のリポジトリをForkして楽させていただきました
- こちらの「Railsアプリを用意する」節の通りに作ってもできます
werckerでCIするアプリケーションを登録
- 登録したアカウントでログインする
-
「Add an application」をクリックしてCIするアプリを追加する
- 「1. Choose a Git provider」でUse GitHubをクリック
- 「2. Select a repository」対象のアプリを選択して「Use selected repo」をクリック
- 「3. Add werckerbot」でwerckerbotを追加するように言われます(スキップ可能)
- 「4. Setup your wercker.yml」でymlを設定するようにいわれますが、先ほどのリポジトリをForkすれば何も文句はいわれません(スキップ可能)
- 「Let's finish up」で「Create application」をクリック
Herokuアプリの作成
- Herokuにログインする
- 「Apps」をクリックする
- 「Create a new app」をクリックし、アプリを作成する
- 任意の名前をしていしなければ自動で適当な名前で作られます
- 私の場合、fierce-chamber-1303という名前が割り当てられました
デプロイの設定
- 「Settings」▶︎「Add deploy target」▶︎「Heroku」
- Herokuにログインする
- Herokuのアカウント設定にある「API Key」をコピペして「Connect」をクリック
- 「Deploy target name」に任意の名前をつける(ex. production)
- 「Auto deploy」にチェックをいれ、branch nameにmasterといれる
- 「Heroku app name」に先ほどで作ったHerokuのアプリ名を選択して「Save」をクリック
wercker.ymlを編集
- 基本的にこちらに書いてあるまま使いました
- 私の試した環境ではうまく動かなくて1カ所だけ編集しました
- $APP_NAMEとしてますが直書きでも可です
- 環境変数を使う場合は、werckerの「Settings」▶︎「Pipeline」▶︎「Add new variable」から追加してください
deploy:
steps:
- heroku-deploy
- script:
name: Update database
# code: heroku run rake db:migrate --app $APP_NAME
code: heroku run:detached rake db:migrate --app $APP_NAME
いざ、git push
- リモートリポジトリに変更がpushされたことをフックして、ビルドとデプロイが開始されることを確認しました
その他
- 私の環境では以下が出来ていなかったのでやっておきました
- .ssh/configの設定
- .git/configの設定
- Heroku周りの設定
- お使いの環境によって細かな違いがあると思うので参考までに
.ssh/configの設定
Host github.com
User git
Hostname ssh.github.com
Port 443
IdentityFile ~/.ssh/id_rsa
Host heroku.com
User git
Hostname heroku.com
Port 22
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
TCPKeepAlive yes
.git/configの設定
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://git@github.com/RustyNail/rails-wercker-heroku.git
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "heroku"]
url = git@heroku.com:fierce-chamber-1303.git
fetch = +refs/heads/*:refs/remotes/heroku/*
Heroku周りの設定
- public keyの登録
$ heroku keys:add
$ heroku login # loginできることを確認
# 以下のようになればOK
Enter your Heroku credentials.
Email: xxxxx@example.com
Password (typing will be hidden):
Authentication successful.
制限
- 1つのビルドが25分以内に完了することという制限があります
- 1つのリポジトリに対して一つのCIしか登録できない
- クレジットカード契約はしない
参考にしたサイト
- http://blog.mah-lab.com/2014/01/08/rails-wercker-heroku-deploy/
- http://yahsan2.blogspot.jp/2012/06/pc-heroku-ssh-key.html
- http://opamp.hatenablog.jp/entry/20110914/1316011399
- http://cynipe.hateblo.jp/entry/2014/01/06/224751
~ただの宣伝~
- 全国のSeleniumer必読
- Seleniumerといっていますが、Selenium, SauceLabs, Travis, Jenkinsに関するノウハウ書いているのでよかったら参考にしてみてください