Skip to content

Instantly share code, notes, and snippets.

@vochicong
Last active September 2, 2018 01:54
Show Gist options
  • Save vochicong/8af98e898885f6e771cc9f974554e3da to your computer and use it in GitHub Desktop.
Save vochicong/8af98e898885f6e771cc9f974554e3da to your computer and use it in GitHub Desktop.
CircleCI for GCP App Engine

CircleCIでGCP App Engineへデプロイ

目標

WebアプリをGitHubプライベートレポジトリから GCP App Engineへ手軽にCI/CDしたい。

Jenkins, TravisCI, CircleCIを比較した結果、今回CircleCIを試すことにしました。

  • Jenkinsが一番経験が多く、やりたいことをなんでもできるが、サーバの構築・運用が面倒だし、今回やりたいことは単純である。
  • TravisCIは使いやすいのだが、無料プランではGitHubプライベートレポジトリに対応してくれない。
  • CircleCIは初めてだが、UIがフレンドリだし、無料プランでもGitHubプレイベートレポジトリに対応している。

運用の全体像

  • 開発者がGitHub /devブランチにソースコードをプッシュする
  • CircleCIが瞬時に自動的に/devブランチをチェックアウトしてテスト実行
  • テストの結果OKなら、CircleCIが自動的にGCP App Engineへ dev バージョンをデプロイする。
  • /master ブランチも同様に、masterバージョンとしてApp Engineへデプロイされる。
  • 自動デプロイされるdevとmasterバージョンはアプリとして個別に稼働するが、データベースは同じ。
  • 今の所、GitHubへのプッシュからデプロイ完了まで約15分かかる(CircleCIで4分、GCP App Engineで11分)。

設定ファイル

CircleCIの設定ファイル

秘密な環境変数はCircleCIのEnvironment Variables画面で定義する。

circle.yml

GCP App Engineの設定ファイル

設定テンプレートがCircleCIによって環境変数が代入され、GCP App Engineの設定ファイル app.yamlが生成される。

app.sample.yaml

GCP App Engineへのデプロイスクリプト

Herokuだとout of the boxでデプロイできるが、 GCPだと、ちょっとややこしいので、デプロイコマンドを 以下のように一つファイルにまとめると整理しやすい。 環境変数は実行時にCircleCIから受け取る。

deploy/gcloud-app-engine-deploy.sh

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment