89 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
| timeout: 1800s
 | |
| 
 | |
| steps:
 | |
| 
 | |
|   # First, build kaniko
 | |
|   - name: "gcr.io/cloud-builders/docker"
 | |
|     args: ["build", "-f", "deploy/Dockerfile",
 | |
|            "-t", "gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:${COMMIT_SHA}", "."]
 | |
|   # Then, we want to build kaniko:debug
 | |
|   - name: "gcr.io/cloud-builders/docker"
 | |
|     args: ["build", "-f", "deploy/Dockerfile_debug",
 | |
|            "-t", "gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:debug-${COMMIT_SHA}", "."]
 | |
|   - name: "gcr.io/cloud-builders/docker"
 | |
|     args: ["build", "-f", "deploy/Dockerfile_debug",
 | |
|            "-t", "gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:${COMMIT_SHA}-debug", "."]
 | |
|   # Then, we want to build the cache warmer
 | |
|   - name: "gcr.io/cloud-builders/docker"
 | |
|     args: ["build", "-f", "deploy/Dockerfile_warmer",
 | |
|            "-t", "gcr.io/$PROJECT_ID/${_WARMER_IMAGE_NAME}:${COMMIT_SHA}", "."]
 | |
| 
 | |
| 
 | |
|   # Build each of the multi-arch images with Bazel and load them into the Docker daemon.
 | |
|   - name: gcr.io/cloud-marketplace-containers/google/bazel:3.4.1
 | |
|     entrypoint: sh
 | |
|     args:
 | |
|     - -c
 | |
|     - |
 | |
|       #!/bin/sh
 | |
|       set -o errexit
 | |
|       set -o xtrace
 | |
| 
 | |
|       bazel run //:gazelle
 | |
|       bazel run --host_force_python=PY2 //cmd/executor:image_amd64
 | |
|       bazel run --host_force_python=PY2 //cmd/executor:image_arm64
 | |
|       bazel run --host_force_python=PY2 //cmd/executor:image_s390x      
 | |
| 
 | |
|   # Publish the individual container images
 | |
|   - name: docker
 | |
|     entrypoint: sh
 | |
|     args:
 | |
|     - -c
 | |
|     - |
 | |
|       #!/bin/sh
 | |
|       set -o errexit
 | |
|       set -o xtrace
 | |
| 
 | |
|       docker tag bazel/cmd/executor:image_amd64     gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:amd64-${COMMIT_SHA}
 | |
|       docker tag bazel/cmd/executor:image_arm64     gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:arm64-${COMMIT_SHA}
 | |
|       docker tag bazel/cmd/executor:image_s390x     gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:s390x-${COMMIT_SHA}
 | |
| 
 | |
|       docker push gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:amd64-${COMMIT_SHA}
 | |
|       docker push gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:arm64-${COMMIT_SHA}
 | |
|       docker push gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:s390x-${COMMIT_SHA}      
 | |
| 
 | |
|   # Enable "manifest list" support in docker, and publish one covering the per-architecture
 | |
|   # images published above.
 | |
|   - name: docker
 | |
|     entrypoint: sh
 | |
|     args:
 | |
|     - -c
 | |
|     - |
 | |
|       #!/bin/sh
 | |
|       set -o errexit
 | |
|       set -o xtrace
 | |
| 
 | |
|       # Publish manifest lists second, after all of the binary material
 | |
|       # has been uploaded, so that it is fast.  We want fast because enabling
 | |
|       # the experimental features in docker changes ~/.docker/config.json, which
 | |
|       # GCB periodically tramples.
 | |
|       #
 | |
|       # Enable support for 'docker manifest create'
 | |
|       # https://docs.docker.com/engine/reference/commandline/manifest_create/
 | |
|       sed -i 's/^{/{"experimental": "enabled",/g' ~/.docker/config.json
 | |
| 
 | |
|       docker manifest create gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:multi-arch-${COMMIT_SHA} \
 | |
|          gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:amd64-${COMMIT_SHA} \
 | |
|          gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:arm64-${COMMIT_SHA} \
 | |
|          gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:s390x-${COMMIT_SHA}
 | |
|       docker manifest push gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:multi-arch-${COMMIT_SHA}      
 | |
| 
 | |
| 
 | |
| images: ["gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:${COMMIT_SHA}",
 | |
|          "gcr.io/$PROJECT_ID/${_EXECUTOR_IMAGE_NAME}:debug-${COMMIT_SHA}",
 | |
|          "gcr.io/$PROJECT_ID/${_WARMER_IMAGE_NAME}:${COMMIT_SHA}"]
 | |
| 
 | |
| substitutions:
 | |
|   _EXECUTOR_IMAGE_NAME: executor
 | |
|   _WARMER_IMAGE_NAME: warmer
 |