最近CIサーバーを自前Jenkinsから CircleCI に移した。CircleCIとても便利で簡単なのでオススメ。
CircleCIには普通のheroku deployは内蔵されているのだけど、 非開発者もGitHub Flowに巻き込んでみんなハッピーになった話 、をやるにはちょっと工夫が必要。
色々書こうと思ったけど、めんどくさくなったのでscriptを晒しておくだけにしよう!
この中で使われているスクリプト関連、特に秘密にする部分もないのでpublicでgithubに置いている。 https://github.com/quipper/deploy-support-tools
/circleci.yml
deployment:
feature:
branch: /^(?!^master$).+$/
commands:
- ./script/staging_deploy.sh
production:
branch: master
commands:
- ./script/production_deploy.sh
/script/staging_deploy.sh
#!/bin/bash -e
STAGING_APP_PREFIX="hoge-cms"
NUM_OF_STAGING_SERVERS=4
DEPLOY_SCRIPT=/tmp/deploy.$$.sh
curl https://quipper-deploy-support-tools.herokuapp.com/scripts/staging_deploy.sh.txt > ${DEPLOY_SCRIPT}
. ${DEPLOY_SCRIPT}
function prepare_for_staging_server() {
heroku addons:add redistogo:nano || : # nothing if it's already installed
heroku labs:enable user-env-compile
heroku config:add \
FOO=bar \
BAZ=hoge
}
deploy
/script/production_deploy.sh (これは普通にdeployするだけのscript)
#!/bin/bash -e
HEROKU_APPS="<heroku app name1> <heroku app name2>"
DEPLOY_SCRIPT=/tmp/deploy.$$.sh
curl https://quipper-deploy-support-tools.herokuapp.com/scripts/production_deploy.sh.txt > ${DEPLOY_SCRIPT}
. ${DEPLOY_SCRIPT}
deploy
上のスクリプト、CircleCIのheroku deployの仕組みは使っていないので、HerokuのSSH keysの登録と、 上記スクリプトから参照される HEROKU_API_TOKEN
と HEROKU_USER
を、CirclCIのEnvironment variablesに設定する必要ある。