docker/cloudbuild.yaml (73 lines of code) (raw):
# In this directory, run the following command to build this builder.
# $ gcloud builds submit
substitutions:
_DOCKER_19: DOCKER_VERSION=5:19.03.15~3-0~ubuntu-focal
_DOCKER_20: DOCKER_VERSION=5:20.10.24~3-0~ubuntu-focal
_DOCKER_24: DOCKER_VERSION=5:24.0.9-1~ubuntu.20.04~focal
steps:
# Pre-requisite: build the base OS container; 'temp' is referenced in the
# Dockerfile for subsequent steps but is not pushed. Building this shared base
# image enables the versioned builders to share base layers.
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '--tag=temp'
- '--file=Dockerfile-base'
- '.'
id: 'base'
# Build all supported versions.
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '--tag=gcr.io/$PROJECT_ID/docker:19.03.15'
- '--file=Dockerfile-versioned'
- '--build-arg=${_DOCKER_19}'
- '.'
id: '19.03.15'
wait_for: ['base']
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '--tag=gcr.io/$PROJECT_ID/docker:latest'
- '--tag=gcr.io/$PROJECT_ID/docker:20.10.24'
- '--file=Dockerfile-versioned'
- '--build-arg=${_DOCKER_20}'
- '.'
id: '20.10.24'
wait_for: ['base']
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '--tag=gcr.io/$PROJECT_ID/docker:24.0.9'
- '--file=Dockerfile-versioned'
- '--build-arg=${_DOCKER_24}'
- '.'
id: '24.0.9'
wait_for: [ 'base' ]
# Future supported versions of docker builder go here.
# Test each version by using it to run "docker build" on itself.
- name: 'gcr.io/$PROJECT_ID/docker:19.03.15'
args:
- 'build'
- '--file=Dockerfile-versioned'
- '--build-arg=${_DOCKER_19}'
- '.'
wait_for: ['19.03.15']
- name: 'gcr.io/$PROJECT_ID/docker:20.10.24'
args:
- 'build'
- '--file=Dockerfile-versioned'
- '--build-arg=${_DOCKER_20}'
- '.'
wait_for: ['20.10.24']
- name: 'gcr.io/$PROJECT_ID/docker:24.0.9'
args:
- 'build'
- '--file=Dockerfile-versioned'
- '--build-arg=${_DOCKER_24}'
- '.'
wait_for: ['24.0.9']
# Tests for future supported versions of docker builder go here.
# Here are some things that can be done with this builder:
# Get info about an image. This effectively runs the "docker inspect" command on
# the image built above.
- name: 'gcr.io/$PROJECT_ID/docker'
args: ['inspect', 'gcr.io/$PROJECT_ID/docker']
wait_for: ['20.10.24']
# Execute a container. The "busybox" container is executed within the docker
# build step to echo "Hello, world!"
- name: 'gcr.io/$PROJECT_ID/docker'
args: ['run', 'busybox', 'echo', 'Hello, world!']
wait_for: ['20.10.24']
images:
- 'gcr.io/$PROJECT_ID/docker:latest'
- 'gcr.io/$PROJECT_ID/docker:19.03.15'
- 'gcr.io/$PROJECT_ID/docker:20.10.24'
- 'gcr.io/$PROJECT_ID/docker:24.0.9'
timeout: 1200s