公式ドキュメントにもしっかりあるし、みんなデフォルトでやってるかもしれないけど、すごく早くなったのでご紹介。
ビルドを高速化する際のおすすめの方法 | Cloud Build のドキュメント | Google Cloud
今まではCloud BuildでCloud Runにデプロイするときにでdockerイメージをbuildするところを下記のようにしてたんですが、
- id: Build
name: gcr.io/cloud-builders/docker
args: ['build',
'-t', 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA',
'-t', 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:latest',
'.',
'-f', 'Dockerfile']
そこの前に下記のように前回最後にbuildしたイメージを取ってくるようにして、build時に--cache-from
を入れると良い感じに前回のイメージを使ってくれる。
- id: Fetch
name: gcr.io/cloud-builders/docker
entrypoint: 'bash'
args: ['-c', 'docker pull asia.gcr.io/$PROJECT_ID/$REPO_NAME:latest || exit 0']
- id: Build
name: gcr.io/cloud-builders/docker
args: ['build',
'-t', 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA',
'-t', 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:latest',
'--cache-from', 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:latest',
'.',
'-f', 'Dockerfile']
24分ぐらいかかってたのが4分になって嬉しい。