iPhoneで Grafanaの グラフを 参照できる アプリ Grafanizer 作ってます。 詳しくは こちらへ

このページは GolangアプリをGitLabCI経由でAppEngineに公開する シリーズの一部です。
全体の目次は こちら でどうぞ。

開発環境と本番環境を分離

開発環境を作成するのも簡単にできる。ここでは

  1. GitLabへのプッシュ
  2. GitLabCIで開発環境への自動デプロイ
  3. 開発環境での動作確認
  4. 本番環境への手動デプロイ

な流れを設定してみる。

なお、 AppEngine にバージョンという概念がありトラフィックを分けてA/Bテストを行うことも出来るのだが、 同じデータを利用するのは怖いため環境を分けることにする。

AppEngineで開発環境の作成

本番環境を作成したときと同じ手順でプロジェクトの作成と AppEngine アプリケーションの作成を実行する。

GitLabの設定

GitLabVariable に以下を追加

  • 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から行える。

deploy_for_production

また、開発環境でテストしていたものの、本番環境でバグが発覚して旧バージョンへ戻したくなるときもありえる。もしそういう事態になったときでも、 GitLab のPipelinesにあるEnvironmentsからバージョンを遡ってロールバックさせることが出来る。

pipelines_rollback.png

ここまでのコミットは ここ で確認出来る。