go/cloudbuild.yaml (253 lines of code) (raw):
# In this directory, run the following command to build this builder.
# $ gcloud builds submit . --config=cloudbuild.yaml
steps:
# Build the alpine and debian versions.
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--tag=gcr.io/$PROJECT_ID/go'
- '--tag=gcr.io/$PROJECT_ID/go:1.15'
- '--tag=gcr.io/$PROJECT_ID/go:alpine'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.15'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--tag=gcr.io/$PROJECT_ID/go:debian'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.15'
- '.'
# Go 1.16
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--build-arg=VERSION=1.16'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.16'
- '--tag=gcr.io/$PROJECT_ID/go:1.16'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--build-arg=VERSION=1.16'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.16'
- '.'
# Go 1.17
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--build-arg=VERSION=1.17'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.17'
- '--tag=gcr.io/$PROJECT_ID/go:1.17'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--build-arg=VERSION=1.17'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.17'
- '.'
# Go 1.18
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--build-arg=VERSION=1.18'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.18'
- '--tag=gcr.io/$PROJECT_ID/go:1.18'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--build-arg=VERSION=1.18'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.18'
- '.'
# Go 1.19
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--build-arg=VERSION=1.19'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.19'
- '--tag=gcr.io/$PROJECT_ID/go:1.19'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--build-arg=VERSION=1.19'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.19'
- '.'
# Go 1.20
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--build-arg=VERSION=1.20'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.20'
- '--tag=gcr.io/$PROJECT_ID/go:1.20'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--build-arg=VERSION=1.20'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.20'
- '.'
# Go 1.21
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--build-arg=VERSION=1.21'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.21'
- '--tag=gcr.io/$PROJECT_ID/go:1.21'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--build-arg=VERSION=1.21'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.21'
- '.'
# Go 1.22
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.alpine'
- '--build-arg=VERSION=1.22'
- '--tag=gcr.io/$PROJECT_ID/go:alpine-1.22'
- '--tag=gcr.io/$PROJECT_ID/go:1.22'
- '.'
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-f'
- 'Dockerfile.debian'
- '--build-arg=VERSION=1.22'
- '--tag=gcr.io/$PROJECT_ID/go:debian-1.22'
- '.'
# Ensure that "go get" works
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['get', 'golang.org/x/net/context']
env: ['GOPATH=/tmp']
# Test the examples.
- name: 'golang'
args: ['go', 'build', '.']
dir: 'examples/module'
- name: 'busybox'
args: ['./module']
dir: 'examples/module'
# examples/hello_world
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['test', 'hello']
env: ['PROJECT_ROOT=hello']
dir: 'examples/hello_world'
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['install', '.']
env: ['PROJECT_ROOT=hello']
dir: 'examples/hello_world'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.']
dir: 'examples/hello_world'
# examples/whole_workspace
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['test', 'hello']
env: ['GOPATH=.']
dir: 'examples/whole_workspace'
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['install', 'hello']
env: ['GOPATH=.']
dir: 'examples/whole_workspace'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.']
dir: 'examples/whole_workspace'
# examples/whole_workspace with an absolute path
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['test', 'hello']
env: ['GOPATH=/workspace/examples/whole_workspace']
dir: 'examples/whole_workspace'
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['install', 'hello']
env: ['GOPATH=/workspace/examples/whole_workspace']
dir: 'examples/whole_workspace'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.']
dir: 'examples/whole_workspace'
# examples/import_workspace
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['test', 'hello']
dir: 'examples/import_workspace'
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['build', 'hello']
dir: 'examples/import_workspace'
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['install', 'hello']
dir: 'examples/import_workspace'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.']
dir: 'examples/import_workspace'
# examples/nested_workspace
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['test', 'hello']
env: ['GOPATH=subproject']
dir: 'examples/nested_workspace'
- name: 'gcr.io/$PROJECT_ID/go:1.20'
args: ['install', 'hello']
env: ['GOPATH=subproject']
dir: 'examples/nested_workspace'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.']
dir: 'examples/nested_workspace'
# examples/https_test
# with alpine/default
- name: 'gcr.io/$PROJECT_ID/go:alpine-1.20'
args: ['install', 'https_test']
dir: 'examples/https_test'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-f', 'Dockerfile.alpine', '--tag=https_test:alpine', '.']
dir: 'examples/https_test'
- name: 'gcr.io/cloud-builders/docker'
args: ['run', 'https_test:alpine']
# clear out the alpine binary.
- name: 'alpine'
args: ['rm', 'gopath/bin/https_test']
dir: 'examples/https_test'
# with debian
- name: 'gcr.io/$PROJECT_ID/go:debian'
args: ['install', 'https_test']
dir: 'examples/https_test'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-f', 'Dockerfile.ubuntu', '--tag=https_test:ubuntu', '.']
dir: 'examples/https_test'
- name: 'gcr.io/cloud-builders/docker'
args: ['run', 'https_test:ubuntu']
options:
env: ['GO111MODULE=auto']
images:
- 'gcr.io/$PROJECT_ID/go'
- 'gcr.io/$PROJECT_ID/go:alpine'
- 'gcr.io/$PROJECT_ID/go:debian'
- 'gcr.io/$PROJECT_ID/go:1.15'
- 'gcr.io/$PROJECT_ID/go:1.16'
- 'gcr.io/$PROJECT_ID/go:1.17'
- 'gcr.io/$PROJECT_ID/go:1.18'
- 'gcr.io/$PROJECT_ID/go:1.19'
- 'gcr.io/$PROJECT_ID/go:1.20'
- 'gcr.io/$PROJECT_ID/go:1.21'
- 'gcr.io/$PROJECT_ID/go:1.22'
- 'gcr.io/$PROJECT_ID/go:alpine-1.15'
- 'gcr.io/$PROJECT_ID/go:debian-1.15'
- 'gcr.io/$PROJECT_ID/go:alpine-1.16'
- 'gcr.io/$PROJECT_ID/go:debian-1.16'
- 'gcr.io/$PROJECT_ID/go:alpine-1.17'
- 'gcr.io/$PROJECT_ID/go:debian-1.17'
- 'gcr.io/$PROJECT_ID/go:alpine-1.18'
- 'gcr.io/$PROJECT_ID/go:debian-1.18'
- 'gcr.io/$PROJECT_ID/go:alpine-1.19'
- 'gcr.io/$PROJECT_ID/go:debian-1.19'
- 'gcr.io/$PROJECT_ID/go:alpine-1.20'
- 'gcr.io/$PROJECT_ID/go:debian-1.20'
- 'gcr.io/$PROJECT_ID/go:alpine-1.21'
- 'gcr.io/$PROJECT_ID/go:debian-1.21'
- 'gcr.io/$PROJECT_ID/go:alpine-1.22'
- 'gcr.io/$PROJECT_ID/go:debian-1.22'
timeout: 2400s