Circle CI + GitHubでの自動デプロイをちょっといじった。
世の中はChatOpsとかが流行っているけど、ターミナルは常に開いているのでこれで良しとした。
経緯
今まで、Gitフローで
master
ブランチにマージ => staging
環境にデプロイ
release
ブランチにマージ => production
環境にデプロイ
ということをやっていたが、 master -> release
のプルリクが面倒になってきたので
master
にマージしたら反映されるようにしたい。
ただ、masterにプッシュしたら即productionに反映されるのはちょっと困ることがあるので
CircleCIのAPIを使って手動でキックして本番環境に反映するようにした。
やったこと
下記のスクリプトを実行すれば、productionにデプロイされる。
ci/release.sh
#!/bin/bash
curl -X POST --header "Content-Type: application/json" -d '{
"build_parameters": {
"DEPLOY": "true"
}
}
' 'https://circleci.com/api/v1.1/project/github/organization/project?circle-token=トークン'
デプロイのスクリプトで、環境変数 $DEPLOY
の有無で本番に反映するか分岐させている。
deploy.sh
# 本番環境の場合、環境変数DEPLOYが有った場合のみ処理を行う。
# CircleCIのAPIを使ってリリースする前提。
[ -n "$DEPLOY" ] || exit 0