開発環境と本番環境を分離 - GolangアプリをGitLabCI経由でAppEngineに公開する -
Feb 10, 2017
このページは GolangアプリをGitLabCI経由でAppEngineに公開する シリーズの一部です。
全体の目次は こちら でどうぞ。
開発環境と本番環境を分離
開発環境を作成するのも簡単にできる。ここでは
- GitLabへのプッシュ
- GitLabCIで開発環境への自動デプロイ
- 開発環境での動作確認
- 本番環境への手動デプロイ
な流れを設定してみる。
なお、 AppEngine にバージョンという概念がありトラフィックを分けてA/Bテストを行うことも出来るのだが、 同じデータを利用するのは怖いため環境を分けることにする。
AppEngineで開発環境の作成
本番環境を作成したときと同じ手順でプロジェクトの作成と AppEngine アプリケーションの作成を実行する。
GitLabの設定
GitLab の Variable
に以下を追加
- PROJECT_ID_DEV : 開発環境用に作成したプロジェクトID
.gitlab-ci.ymlの調整
Staging
と、 Production
への when
, environment
を追加してある。
when
は手動デプロイするための設定で、 environment
はデプロイ後にバージョンを戻したくなったときへの対応となる。
image: nobuhito/gae-go-alpine
stages:
- staging
- production
deploy_for_staging:
stage: staging
script: python /google_appengine/appcfg.py update . --oauth2_refresh_token=$REFRESH_TOKEN -A $PROJECT_ID_DEV
deploy_for_production:
stage: production
script: python /google_appengine/appcfg.py update . --oauth2_refresh_token=$REFRESH_TOKEN -A $PROJECT_ID
when: manual
environment: production
手動デプロイと旧バージョンへのロールバック
本番環境へのデプロイは GitLab のPipelinesにあるBuildsから行える。
また、開発環境でテストしていたものの、本番環境でバグが発覚して旧バージョンへ戻したくなるときもありえる。もしそういう事態になったときでも、 GitLab のPipelinesにあるEnvironmentsからバージョンを遡ってロールバックさせることが出来る。
ここまでのコミットは ここ で確認出来る。