Open2
Cloudbuild から GCR へ 複数の tag をつけて pushする方法
基本 latest か 個別の 認識タグで GCR の運用するときに、build した image に複数のタグつけて 最初の一回 で一緒に push したい願望!
SDK で add-tag あるけど一度でしたいw
Cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [
'build',
'-t', 'gcr.io/$PROJECT_ID/scala-sbt:$SHORT_SHA',
'-t', 'gcr.io/$PROJECT_ID/scala-sbt:latest',
'--cache-from', 'gcr.io/$PROJECT_ID/scala-sbt:latest',
'-f', 'Dockerfile', '.'
]
env:
'SHORT_SHA=$SHORT_SHA'
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/$PROJECT_ID/scala-sbt']
images:
- 'gcr.io/$PROJECT_ID/scala-sbt:latest'
tags: ['cloud-builders-community']
Dockerfile
FROM amazoncorretto:11-alpine
ARG SBT_VERSION=1.4.4
RUN apk update && \
apk add curl && \
apk add bash && \
curl -L -o sbt-${SBT_VERSION}.tgz https://github.com/sbt/sbt/releases/download/v${SBT_VERSION}/sbt-${SBT_VERSION}.tgz && \
tar -xvzf sbt-${SBT_VERSION}.tgz && \
rm sbt-${SBT_VERSION}.tgz
ENV PATH $PATH:/sbt/bin
RUN sbt -V
CMD [ "sh" ]
git の short hash, $SHORT_SHAとlatestをビルドした際につける。
'-t', 'gcr.io/$PROJECT_ID/scala-sbt:$SHORT_SHA',
'-t', 'gcr.io/$PROJECT_ID/scala-sbt:latest',
$SHORT_SHA
は cloudbuild上では default substitutions として値があるが手元からsubmit するときは 定義する。
env:
'SHORT_SHA=$SHORT_SHA'
submit command
# 環境変数の設定
GCP_PROJECT=$(gcloud config get-value project) # $PROJECT_ID
SHORT_SHA=$(git rev-parse --short HEAD) # tag の 値
#
gcloud builds submit . --config cloudbuild.yaml \
--substitutions=SHORT_SHA=$SHORT_SHA
設定した値がないと
Step #0: invalid argument "gcr.io/{GCP_PROJECT_ID}/scala-sbt:" for "-t, --tag" flag: invalid reference format