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のEnvironment Variables画面で定義する。
設定テンプレートがCircleCIによって環境変数が代入され、GCP App Engineの設定ファイル app.yamlが生成される。
Herokuだとout of the boxでデプロイできるが、 GCPだと、ちょっとややこしいので、デプロイコマンドを 以下のように一つファイルにまとめると整理しやすい。 環境変数は実行時にCircleCIから受け取る。