Open4

[Cloud Build編]調べたことのメモ

cloudbuild.yaml の例

substitutions:
  _SERVICE_NAME: '' # 被らないようにサービス名をいれる
steps:
  # Build the container image
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/$_SERVICE_NAME:$COMMIT_SHA', '.']
  # Push the image to Container Registry
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/$PROJECT_ID/$_SERVICE_NAME:$COMMIT_SHA']
  # Deploy image to Cloud Run
  - name: 'gcr.io/cloud-builders/gcloud'
    args:
      - 'run'
      - 'deploy'
      - '$_SERVICE_NAME'
      - '--image'
      - 'gcr.io/$PROJECT_ID/$_SERVICE_NAME:$COMMIT_SHA'
      - '--region'
      - 'asia-northeast1'
      - '--platform'
      - 'managed'
      - '--port'
      - '3000'
      - '--revision-suffix'
      - '$SHORT_SHA'
      - '--allow-unauthenticated'
images:
  - 'gcr.io/$PROJECT_ID/$_SERVICE_NAME'

Firebaseを使っているプロジェクトでCloud Buildを用いてCloud Runにデプロイするときの権限設定

アカウント 権限
Compute Engine default service account 編集者
サービス アカウント トークン作成者
ストレージ管理者
Cloud Build Cloud Build サービス アカウント
サービス アカウント ユーザー
Cloud Run 管理者
Storage オブジェクト閲覧者

Slackにデプロイ開始を通知

steps:
  - name: gcr.io/cloud-builders/curl
    args:
      [
        '-X',
        'POST',
        '-H',
        'Content-type: application/json',
        '--data',
        '{"text":"デプロイ開始"}',
        'https://hooks.slack.com/',
      ]

不要なイメージを最新3件以外削除

steps:
  - name: gcr.io/cloud-builders/gcloud
    entrypoint: bash
    args:
      - -c
      - |
        gcloud container images list-tags gcr.io/$PROJECT_ID/$_SERVICE_NAME --project $PROJECT_ID | awk '(4 < NR) {system("gcloud container images delete gcr.io/$PROJECT_ID/$_SERVICE_NAME:"$2"")}'
作成者以外のコメントは許可されていません