GitHub / Bitbucket のプライベートリポジトリも無料で CI し放題の wercker というサービスがあります。(2013/11/30 現在)
サイトもきれいで素敵です。ビルド成功後、Capistrano でデプロイが自動実行される方法を書いておきます。
まず、アプリの設定で SSH 公開鍵を作成します。
生成された公開鍵は、デプロイ先サーバの ~/.ssh/authorized_keys や Bitbucket のデプロイ鍵などに追加しておきます。
次に、アプリの設定から Deploy targets の設定をします。Custom deploy を選択して、
master ブランチのビルドに成功したら、自動デプロイするようにします。
入力したら、Deploy pipeline の Add new variable をクリック。
SSH Key pair を選択し、先ほど作成した鍵を選択します。
名前の欄には、WERCKER_SSH_KEY と設定しました。
これで、デプロイ時に WERCKER_SSH_KEY_PUBLIC, WERCKER_SSH_KEY_PRIVATE という環境変数が設定されます。
OK をクリック。
Save をクリック。
あとは、wercker.yml に deploy 部分を追加して commit & push すれば、自動デプロイ環境構築完了です。
Capistrano の config/deploy.rb も、適切に設定してあるか確認しておくと良いと思います。
以下、wercker.yml の追加部分です。
deploy:
steps:
- script:
name: make .ssh directory
code: mkdir -p "$HOME/.ssh"
- create-file:
name: write ssh key
filename: $HOME/.ssh/id_rsa
overwrite: true
hide-from-log: true
content: $WERCKER_SSH_KEY_PRIVATE
- script:
name: set permissions for ssh key
code: chmod 0400 $HOME/.ssh/id_rsa
- cap
最後に、とある Rails アプリの wercker.yml 全体例も貼っておきます。
box: wercker/ubuntu12.04-ruby2.0.0
services:
- wercker/mysql
build:
steps:
- bundle-install
- rails-database-yml
- script:
name: echo ruby information
code: |
echo "ruby version $(ruby --version) running"
echo "from location $(which ruby)"
echo -p "gem list: $(gem list)"
- script:
name: setup config files
code: |
cp config/resque.sample.yml config/resque.yml
cp config/sunspot.sample.yml config/sunspot.yml
- script:
name: setup db
code: bundle exec rake db:schema:load RAILS_ENV=test
- script:
name: rspec
code: bundle exec rspec
after-steps:
- hipchat-notify:
token: $HIPCHAT_TOKEN
room-id: 357378
from-name: wercker
deploy:
steps:
- script:
name: make .ssh directory
code: mkdir -p "$HOME/.ssh"
- create-file:
name: write ssh key
filename: $HOME/.ssh/id_rsa
overwrite: true
hide-from-log: true
content: $WERCKER_SSH_KEY_PRIVATE
- script:
name: set permissions for ssh key
code: chmod 0400 $HOME/.ssh/id_rsa
- cap
after-steps:
- hipchat-notify:
token: $HIPCHAT_TOKEN
room-id: 357378
from-name: wercker