created: 2020-05-07T14:20:24.000Z
cloudrun にデプロイする cloudbuild.yaml
トリガー
まず、cloudbuildのトリガーをこんな感じで登録しておく
^master$
のときに変数が_SERVICE=service
となるように^canary/
のときに変数が_SERVICE=service-canary
となるように
cloudbuild.yaml
timeout: '900s'
steps:
- name: 'gcr.io/cloud-builders/docker'
id: 'docker-pull'
args: ['pull', 'asia.gcr.io/$PROJECT_ID/$_SERVICE:latest']
- name: 'gcr.io/cloud-builders/docker'
id: 'docker-build'
args: [ 'build',
'--cache-from', 'asia.gcr.io/$PROJECT_ID/$_SERVICE:latest',
'--tag', 'asia.gcr.io/$PROJECT_ID/$_SERVICE:$REVISION_ID',
'app' # Dockerfile がルートディレクトリ以外の場所にあったので
]
- name: 'gcr.io/cloud-builders/docker'
id: 'docker-tag'
args: ['tag',
'asia.gcr.io/$PROJECT_ID/$_SERVICE:$REVISION_ID',
'asia.gcr.io/$PROJECT_ID/$_SERVICE:latest'
]
- name: 'gcr.io/cloud-builders/docker'
id: 'docker-push'
args: ['push', 'asia.gcr.io/$PROJECT_ID/$_SERVICE']
- name: 'gcr.io/cloud-builders/gcloud'
id: 'cloudrun-deploy'
args: ['beta', 'run', 'deploy', '$_SERVICE',
'--image', 'asia.gcr.io/$PROJECT_ID/$_SERVICE:$REVISION_ID',
'--region', 'asia-northeast1',
'--platform', 'managed',
'--allow-unauthenticated' # publicなリクエストを受け付ける場合
]
注意
一番最初は事前に asia.gcr.io/$PROJECT_ID/$_SERVICE:latest
に
何らかのイメージをpushしておく必要がある
権限
なお、cloudbuild から cloudrun にデプロイするときの権限についてはこちらの記事が参考になった