Open3

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

しんのすけしんのすけ

cloudbuild.yaml の例

検証用環境想定なので、インスタンス数やCPUは調整必要

steps:
  # Build the container image
  - id: build
    name: 'gcr.io/cloud-builders/docker'
    env:
      - DOCKER_BUILDKIT=1
    args: ['build', '-t', '${_IMAGE_PATH}', '.']
  # Push the image to Artifact Registry
  - id: push
    name: 'gcr.io/cloud-builders/docker'
    args: ['push', '${_IMAGE_PATH}']
  # Deploy image to Cloud Run
  - id: deploy
    name: 'gcr.io/cloud-builders/gcloud'
    args:
      [
        'run',
        'deploy',
        '$_SERVICE_NAME',
        '--image',
        '${_IMAGE_PATH}',
        '--region',
        'asia-northeast1',
        '--platform',
        'managed',
        '--port',
        '3000',
        '--revision-suffix',
        '$SHORT_SHA',
        '--concurrency',
        '50',
        '--max-instances',
        '10',
        '--allow-unauthenticated',
        '--env-vars-file',
        '$_ENV_FILE',
      ]
  # Delete old images from Artifact Registry
  - id: delete-old-images
    name: 'asia-docker.pkg.dev/gcr-cleaner/gcr-cleaner/gcr-cleaner-cli:latest'
    args: ['--repo=${_REPOSITORY_PATH}', '--keep=5', '--tag-filter-any=.*']
images:
  - $_IMAGE_PATH
substitutions:
  _REPOSITORY_PATH: 'asia-northeast1-docker.pkg.dev/${PROJECT_ID}/registries/${_SERVICE_NAME}'
  _IMAGE_PATH: 'asia-northeast1-docker.pkg.dev/${PROJECT_ID}/registries/${_SERVICE_NAME}:${SHORT_SHA}'
options:
  dynamicSubstitutions: true
timeout: 1200s

しんのすけしんのすけ

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

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

Slackにデプロイ開始を通知

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