capistrano自体はcapistrano-ext使えばproductionとかstagingとか複数環境へのデプロイができるようになるけど、それをwercker使って複数環境に自動デプロイできるようにした。
こちらを事前に見ておくと良いかもです。
Rails+postgresql+capistrano環境のwercker設定
wercker.ymlファイル
$WERCKER_DEPLOYTARGET_NAME
という環境変数がdeploy先の名前として使える(後述の管理画面から指定するやつ)ので下記のようにymlファイルを作成する。
wercker.yml
deploy:
steps:
- bundle-install
- 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:
stage: $WERCKER_DEPLOYTARGET_NAME
tasks: deploy
werckerの管理画面からDeploy targetsを設定
下記サムネイルの例はmasterブランチにmergeされたらproduction環境にデプロイしたい場合。stagingブランチにmergeされたらstaging環境にデプロイしたければ両方stagingと書けばいい。
いくつか環境があればその分だけ管理画面から作成してあげればそれだけ自動デプロイされるようになります。