diff --git a/cloudbuild.yaml b/cloudbuild.yaml index acb5ed19..ef578ccd 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -4,6 +4,7 @@ options: machineType: 'E2_HIGHCPU_32' env: - DOCKER_CLI_EXPERIMENTAL=enabled + - BUILDX_NO_DEFAULT_ATTESTATIONS=1 logsBucket: 'gs://cloud-sdk-docker-build-logs' steps: - name: 'tonistiigi/binfmt:qemu-v6.2.0' @@ -15,22 +16,10 @@ steps: args: - 'buildx' - 'create' + - '--use' # Create and use builder in one step - '--name' - 'mybuilder' -- name: 'gcr.io/cloud-builders/docker' - id: multi_arch_step2 - args: - - 'buildx' - - 'use' - - 'mybuilder' - waitFor: ['multi_arch_step1'] -- name: 'gcr.io/cloud-builders/docker' - id: multi_arch_step3 - args: - - 'buildx' - - 'inspect' - - '--bootstrap' - waitFor: ['multi_arch_step2'] + - '--bootstrap' # Bootstrap in the same step - name: 'gcr.io/cloud-builders/docker' id: alpine args: ['build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '-t', 'google/cloud-sdk:alpine', '-t', 'google/cloud-sdk:$TAG_NAME-alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/cloud-sdk:alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/cloud-sdk:$TAG_NAME-alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/cloud-sdk:$TAG_NAME-alpine-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/cloud-sdk:alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/cloud-sdk:$TAG_NAME-alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/cloud-sdk:$TAG_NAME-alpine-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/cloud-sdk:alpine', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/cloud-sdk:$TAG_NAME-alpine', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/cloud-sdk:$TAG_NAME-alpine-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/cloud-sdk:alpine', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/cloud-sdk:$TAG_NAME-alpine', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/cloud-sdk:$TAG_NAME-alpine-$_DATE', 'alpine/'] @@ -57,25 +46,65 @@ steps: waitFor: ['-'] # END OF PROD BUILDING STEPS - name: 'gcr.io/cloud-builders/docker' - id: multi_arch_debian_slim - args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64,linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:slim', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:slim', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', 'debian_slim/', '--push'] - waitFor: ['multi_arch_step3'] + id: multi_arch_debian_slim_arm + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-arm', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-arm', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-arm', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-arm', 'debian_slim/', '--push'] + waitFor: ['multi_arch_step1'] - name: 'gcr.io/cloud-builders/docker' - id: multi_arch_debian_component_based - args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64,linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:debian_component_based', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:debian_component_based', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', 'debian_component_based/', '--push'] - waitFor: ['multi_arch_step3'] + id: multi_arch_debian_slim_amd + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-amd', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-amd', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-amd', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE-amd', 'debian_slim/', '--push'] + waitFor: ['multi_arch_debian_slim_arm'] - name: 'gcr.io/cloud-builders/docker' - id: multi_arch_alpine - args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64,linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:alpine', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:alpine', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', 'alpine/', '--push'] - waitFor: ['multi_arch_step3'] + id: multi_arch_step2 + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64,linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:slim', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:slim', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-slim', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-slim-$_DATE', 'debian_slim/', '--push'] + waitFor: ['multi_arch_debian_slim_amd', 'multi_arch_debian_slim_arm'] - name: 'gcr.io/cloud-builders/docker' - id: multi_arch_emulators - args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64,linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:emulators', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:emulators', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', 'emulators/', '--push'] - waitFor: ['multi_arch_step3'] + id: multi_arch_debian_component_based_arm + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-arm', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-arm', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-arm', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-arm', 'debian_component_based/', '--push'] + waitFor: ['multi_arch_step2'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_debian_component_based_amd + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-amd', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-amd', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-amd', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE-amd', 'debian_component_based/', '--push'] + waitFor: ['multi_arch_debian_component_based_arm'] - name: 'gcr.io/cloud-builders/docker' - id: multi_arch_stable - args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64,linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:stable', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:stable', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', 'stable/', '--push'] + id: multi_arch_step3 + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64,linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:debian_component_based', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:debian_component_based', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-debian_component_based-$_DATE', 'debian_component_based/', '--push'] + waitFor: ['multi_arch_debian_component_based_amd', 'multi_arch_debian_component_based_arm'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_alpine_arm + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-arm', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-arm', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-arm', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-arm', 'alpine/', '--push'] waitFor: ['multi_arch_step3'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_alpine_amd + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-amd', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-amd', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-amd', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE-amd', 'alpine/', '--push'] + waitFor: ['multi_arch_alpine_arm'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_step4 + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64,linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:alpine', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:alpine', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-alpine', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-alpine-$_DATE', 'alpine/', '--push'] + waitFor: ['multi_arch_alpine_amd', 'multi_arch_alpine_arm'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_emulators_arm + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-arm', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-arm', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-arm', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-arm', 'emulators/', '--push'] + waitFor: ['multi_arch_step4'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_emulators_amd + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-amd', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-amd', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-amd', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE-amd', 'emulators/', '--push'] + waitFor: ['multi_arch_emulators_arm'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_step5 + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64,linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:emulators', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:emulators', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-emulators', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-emulators-$_DATE', 'emulators/', '--push'] + waitFor: ['multi_arch_emulators_amd', 'multi_arch_emulators_arm'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_stable_arm + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-arm', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-arm', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-arm', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-arm', 'stable/', '--push'] + waitFor: ['multi_arch_step5'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_stable_amd + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-amd', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-amd', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-amd', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE-amd', 'stable/', '--push'] + waitFor: ['multi_arch_stable_arm'] +- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_step6 + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64,linux/arm64', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'us-docker.pkg.dev/google.com/cloudsdktool/us.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:stable', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'europe-docker.pkg.dev/google.com/cloudsdktool/eu.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:stable', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-stable', '-t', 'asia-docker.pkg.dev/google.com/cloudsdktool/asia.gcr.io/google-cloud-cli:$TAG_NAME-stable-$_DATE', 'stable/', '--push'] + waitFor: ['multi_arch_stable_amd', 'multi_arch_stable_arm'] - name: 'gcr.io/cloud-builders/docker' id: dockersecret entrypoint: 'bash' diff --git a/generate_cloudbuild.py b/generate_cloudbuild.py index 79014d40..8d70817f 100644 --- a/generate_cloudbuild.py +++ b/generate_cloudbuild.py @@ -4,6 +4,7 @@ machineType: 'E2_HIGHCPU_32' env: - DOCKER_CLI_EXPERIMENTAL=enabled + - BUILDX_NO_DEFAULT_ATTESTATIONS=1 logsBucket: 'gs://cloud-sdk-docker-build-logs' steps: - name: 'tonistiigi/binfmt:qemu-v6.2.0' @@ -15,22 +16,10 @@ args: - 'buildx' - 'create' + - '--use' # Create and use builder in one step - '--name' - 'mybuilder' -- name: 'gcr.io/cloud-builders/docker' - id: multi_arch_step2 - args: - - 'buildx' - - 'use' - - 'mybuilder' - waitFor: ['multi_arch_step1'] -- name: 'gcr.io/cloud-builders/docker' - id: multi_arch_step3 - args: - - 'buildx' - - 'inspect' - - '--bootstrap' - waitFor: ['multi_arch_step2'] + - '--bootstrap' # Bootstrap in the same step {BUILDSTEPS} # END OF PROD BUILDING STEPS {MULTIARCH_BUILDSTEPS} @@ -63,14 +52,15 @@ 'default': '', 'debian_component_based': 'debian_component_based', 'emulators': 'emulators', - 'stable': 'stable' # change it to stable when the image is ready to release. + 'stable': 'stable' } def MakeGcrTags(label_without_tag, label_with_tag, maybe_hypen, include_old_name=True, - include_rebrand_name=True): + include_rebrand_name=True, + arch=''): t = [] for gcr_prefix, gcr_suffix in GCR_PREFIXES: if include_old_name: @@ -121,15 +111,29 @@ def MakeGcrTags(label_without_tag, gcrio_suffix=gcr_suffix, maybe_hypen=maybe_hypen, label=label_with_tag)) + if arch: + t.append( + '\'{gcrprefix}/{gcrio_project}/{gcrio_suffix}/{rebrand_name}:$TAG_NAME{maybe_hypen}{label}-$_DATE-{arch}\'' + .format(gcrprefix=gcr_prefix, + gcrio_project=GCRIO_PROJECT, + gcrio_suffix=gcr_suffix, + rebrand_name=REBRAND_NAME, + maybe_hypen=maybe_hypen, + label=label_without_tag, + arch=arch)) return t # Make all the tags and save them tags={} multi_arch_tags={} +multi_arch_arm_tags={} +multi_arch_amd_tags={} for i in IMAGES: tags[i]=[] if i in MULTI_ARCH: multi_arch_tags[i]=[] + multi_arch_arm_tags[i]=[] + multi_arch_amd_tags[i]=[] label_name = LABEL_FOR_IMAGE[i] label_without_tag = label_name label_with_tag = label_name @@ -162,6 +166,20 @@ def MakeGcrTags(label_without_tag, label_with_tag, maybe_hypen, include_old_name=False)) + # new gcr tags go into multiarch arm tags + multi_arch_arm_tags[i].extend(MakeGcrTags(label_without_tag, + label_with_tag, + maybe_hypen, + include_old_name=False, + include_rebrand_name=False, + arch='arm')) + # new gcr tags go into multiarch amd tags + multi_arch_amd_tags[i].extend(MakeGcrTags(label_without_tag, + label_with_tag, + maybe_hypen, + include_old_name=False, + include_rebrand_name=False, + arch='amd')) build_steps='' for i in IMAGES: @@ -182,22 +200,45 @@ def MakeGcrTags(label_without_tag, build_steps+=output_build_step multi_arch_build_steps='' +counter = 1 for i in MULTI_ARCH: image_directory = '{}/'.format(i) if i == 'default': image_directory = '.' + multi_arch_arm_build_step = """- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_{image_name}_arm + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64', {tags}, '{image_directory}', '--push'] + waitFor: ['multi_arch_step{counter}']""" + output_build_arm_step = multi_arch_arm_build_step.format( + image_name=i, + tags=', '.join(['\'-t\', {}'.format(t) for t in multi_arch_arm_tags[i]]), + image_directory=image_directory, + counter=counter) + counter+=1 + if len(multi_arch_build_steps) > 0: + multi_arch_build_steps+='\n' + + multi_arch_amd_build_step = """- name: 'gcr.io/cloud-builders/docker' + id: multi_arch_{image_name}_amd + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64', {tags}, '{image_directory}', '--push'] + waitFor: ['multi_arch_{image_name}_arm']""" + output_build_amd_step = multi_arch_amd_build_step.format( + image_name=i, + tags=', '.join(['\'-t\', {}'.format(t) for t in multi_arch_amd_tags[i]]), + image_directory=image_directory) + multi_arch_build_step = """- name: 'gcr.io/cloud-builders/docker' - id: multi_arch_{image_name} - args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/arm64,linux/amd64', {tags}, '{image_directory}', '--push'] - waitFor: ['multi_arch_step3']""" + id: multi_arch_step{counter} + args: ['buildx', 'build', '--build-arg', 'CLOUD_SDK_VERSION=$_CLI_VERSION', '--platform', 'linux/amd64,linux/arm64', {tags}, '{image_directory}', '--push'] + waitFor: ['multi_arch_{image_name}_amd', 'multi_arch_{image_name}_arm']""" output_build_step = multi_arch_build_step.format( image_name=i, tags=', '.join(['\'-t\', {}'.format(t) for t in multi_arch_tags[i]]), - image_directory=image_directory) - if len(multi_arch_build_steps) > 0: - multi_arch_build_steps+='\n' - multi_arch_build_steps+=output_build_step + image_directory=image_directory, + counter=counter) + + multi_arch_build_steps+=output_build_arm_step + '\n' + output_build_amd_step + '\n' + output_build_step docker_push_steps='' for i in IMAGES: @@ -225,3 +266,4 @@ def MakeGcrTags(label_without_tag, DOCKER_PUSHSTEPS=docker_push_steps, GCR_IO_TAGS_SORTED=all_gcr_io_tags_for_images )) +