Cloud BuildでCFsのCI/CD

gcp


メリクリ!この記事は PMOB Advent Calendar 10日目の記事です。 12/25に投稿されているという点以外は。

やること

この間のやつ のCI/CDをCloud Buildでやります。

GCP側でひゅってする

  1. GCPのダッシュボードからCloud Buildのダッシュボードを開く
  2. TriggersタブからCreate trigger
  3. SourceにGitHubを選択
    • Build configurationでcloudbuild.yamlを選択
  4. 名前を “Deploy Slack Bookmark” として作る

リポジトリにCI用のスクリプト足す

cloudbuild.yaml を作ります。 前回作ったwerckerの設定 は消します。

まずテスト用インテグレーション

cloudbuild.yaml とします。

steps:
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'test']

デプロイ用インテグレーション

cloudbuild/deploy.yaml とします。

steps:
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'test']
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['functions', 'deploy', 'slackBookmark', '--runtime=nodejs8', '--trigger-http', '--region=asia-northeast1']
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['functions', 'deploy', 'slackBookmarkPickRandomly', '--runtime=nodejs8', '--trigger-http', '--region=asia-northeast1']

横に長い。

GitHubにこれを足したら、Triggerの設定を投入します。 Cloud Buildのダッシュボードから “Deploy Slack Bookmark” を選択して以下のようにします。

  1. Branchを master にする。
  2. “cloudbuild.yaml location” を cloudbuild/deploy.yaml にする。

GCP側でIAMの設定

Cloud BuildでFunctionsをデプロイするにはIAMのrole設定も必要になります。 IAM名は [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com 、 追加するRoleは Cloud Functions Developer です。 これで 'gcr.io/cloud-builders/gcloud' からデプロイできるようになります。

あとIAMの設定が不足していた場合はIAMにactAsの設定を追加する必要があるかもしれません。 設定方法はこの辺みてね。

gcloud iam service-accounts add-iam-policy-binding

github.com側の設定

テストをするCIはPRのマージブロック設定に使いたいので、 テスト結果をgithub.comのstatusとしてレポートしたいです。 そのためにAppsを有効にします。

Google Cloud Build · GitHub Marketplace

ここからなんかエイヤっとしましょう。 で、リポジトリのSettingからbranch protectionを設定すればもういい感じのアレです。

感想