手順
- gcpとgithubを連携させる https://github.com/apps/google-cloud-build
- githubの作業リポジトリを「Source Repositories」に同期
- .envを暗号化
- cloud buildの設定
- ブランチにpushされたときの動作をcloudbuild.yamlに記述
githubの作業リポジトリを「Source Repositories」に同期
- 「Source Repositories」をクリック
- リポジトリの追加
- 外部リポジトリの接続
- gitプロバイダを「GitHub」にする
- githubにログインした状態で該当リポジトリを選択
- github「aeon-ec-support」のdevelop/masterブランチにpush
- 「Source Repositories」にデータが反映されることを確認
参考サイト
.envを暗号化
- 管理している.envファイルをセキュリティのため暗号化する
- 暗号化したものをcloud.yamlで復号化
- 設定は
セキュリティ/暗号鍵
- Cloud KMS API の有効化
- Cloud SDKのインストール
暗号鍵を作成
- セキュリティ/暗号鍵でキーリング作成
- 目的 対称暗号化/復号化
- デフォルトのアルゴリズム Google対称キー
.envを暗号化
// ログイン
$ gcloud auth login
// Google Cloud SDK が Google アカウントへのアクセスをリクエストを許可してから
$ gcloud config set project {プロジェクトID}
// 暗号化
$ gcloud kms encrypt \
--plaintext-file=.env \
--ciphertext-file={ファイル名 例).env.enc} \
--location=global \
--keyring={キーリング名} \
--key={キー名} \
--project={プロジェクトID 例) hoge-fuga}
参考サイト
cloud buildの設定/起動
- ビルド履歴のAPIを有効にする
- ビルドトリガー「トリガーを作成」
- トリガーのタイプ「ブランチ」
- ブランチはstgなら「develop」/prodは「master」
cloudbuild.yamlにカスタムビルドを設定
- .envを復号化
- npmをinstall
- package.jasonで指定したfirebase deployコマンドを実行
-
cloud build
のトリガーに環境変数を定義${_KMS_KEYRING}
、${_KMS_KEY}
cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: [
'kms',
'decrypt',
'--location=global',
'--keyring=${_KMS_KEYRING}',
'--key=${_KMS_KEY}',
'--ciphertext-file=.env.enc',
'--plaintext-file=.env'
]
- name: 'gcr.io/cloud-builders/yarn'
args: ['install']
- name: 'gcr.io/cloud-builders/yarn'
args: ['build']
- name: 'gcr.io/cloud-builders/yarn'
args: ['run deploy']
参考サイト
- https://medium.com/google-cloud/how-to-set-up-cloud-build-for-firebase-cloud-functions-cffcf2812302
- https://medium.com/google-cloud-jp/google-cloud-build-%E3%81%A7-ci-cd-firebase-hosting-%E7%B7%A8-60a86125be41
app.yamlを作成
- アプリをデプロイするために
app.yaml
を作成
app.yaml
# [START app_yaml]
runtime: nodejs8
# [END app_yaml]
App Engineを作成
- アプリ作成のためのプラットフォーム
- Node.jsで動かすので
package.json
にversion8を指定
package.json
"engines": {
"node": "8.x.x"
},
// App Engineを作成
$ gcloud app deploy --version 1 app.yaml --project=hoge-fuga
// localでデプロイコマンド
$ gcloud app deploy --version 1 app.yaml