| options: | |
| env: | |
| - 'DOCKER_CLI_EXPERIMENTAL=enabled' | |
| machineType: 'N1_HIGHCPU_8' | |
| steps: | |
| # Build kdump debugger image | |
| # This step is needed to add a new entry to /proc/sys/fs/binfmt_misc. Docker | |
| # uses QEMU user emulation to run arm64 programs on x86 hosts. A QEMU | |
| # interpreter needs to be added to /proc/sys/fs/binfmt_misc to run arm64 | |
| # programs. Use tonistiigi/binfmt over linuxkit/binfmt to resolve ARM64 seg faults | |
| # relating to libc-bin while installing crash-7.3.0. This change essentially | |
| # swaps the host qemu to qemu v6+. | |
| - name: 'gcr.io/cloud-builders/docker' | |
| args: ['run', '--privileged', '--rm' ,'tonistiigi/binfmt', '--uninstall','qemu-*'] | |
| - name: 'gcr.io/cloud-builders/docker' | |
| args: ['run', '--privileged', '--rm', 'tonistiigi/binfmt', '--install', 'all'] | |
| # The default builder (which appears to be the Docker daemon that implements | |
| # the old, familiar `docker build` behavior) doesn't support the --platform | |
| # flag, so we need to create a new builder. | |
| - name: 'gcr.io/cloud-builders/docker' | |
| args: ['buildx', 'create', '--name', 'builder'] | |
| - name: 'gcr.io/cloud-builders/docker' | |
| args: ['buildx', 'use', 'builder'] | |
| # Images produced in this way do not appear in the Docker image registry shown | |
| # by `docker images`, at least by default. We use the --push flag to push the | |
| # image after building it, because a subsequent `docker push` won't find the | |
| # image locally. | |
| - name: 'gcr.io/cloud-builders/docker' | |
| entrypoint: 'bash' | |
| args: | |
| - '-c' | |
| - | | |
| if [ "$_BUILD_TYPE" == "presubmit" ]; then | |
| # If it's presubmit, push to us-docker.pkg.dev/cos-infra-prod/gcr-io-dev with BUILD_ID, presubmit-BUILD_ID tags | |
| docker buildx build --platform 'linux/amd64,linux/arm64' --build-arg 'BUILDKIT_INLINE_CACHE=1' -f 'src/cmd/cos_kdump_debugger/Dockerfile' -t 'us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:${_TAG_NAME}' -t 'us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:${_BUILD_TYPE}-${_TAG_NAME}' --cache-from 'us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:latest' --push 'src/cmd/cos_kdump_debugger' | |
| docker pull us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:${_TAG_NAME} | |
| elif [ "$_BUILD_TYPE" == "official" ]; then | |
| # If it's official, push to us-docker.pkg.dev/cos-infra-prod/gcr-io-dev with latest tag, BUILD_ID and official-BUILD_ID tags | |
| docker buildx build --platform 'linux/amd64,linux/arm64' --build-arg 'BUILDKIT_INLINE_CACHE=1' -f 'src/cmd/cos_kdump_debugger/Dockerfile' -t 'us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:${_TAG_NAME}' -t 'us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:${_BUILD_TYPE}-${_TAG_NAME}' -t 'us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:latest' --push 'src/cmd/cos_kdump_debugger' | |
| docker pull us-docker.pkg.dev/${_OUTPUT_PROJECT}/gcr-io-dev/cos_kdump_debugger:${_TAG_NAME} | |
| else | |
| echo "Invalid BUILD_TYPE: $_BUILD_TYPE" | |
| exit 1 | |
| fi | |
| timeout: 3600s |