docker: multiarch images (amd64/aarch64) (#29691)
	
		
	
				
					
				
			* arch specific tags * merge multiarch script * arm64 build and merge jobs * update tag script * casual ci test * change image to 2204 * docker -v test * arch specific naming * Remove test_buildjet * build -arch images only when CURRENT_ARCH_BUILD is set * support new tags in tag_multiarch * Toggle CURRENT_ARCH_BUILD on in ci * Docker common * Fix condition * Fix path to docker_common * Add more stuff to common * Add build_arm job * composite job for building * Run checkout before build composite * add shell arg * move timeout to selfdrive_tests * TARGET ARCHITECTURE var * Support TARGET_ARCHITECTURE in workflow * Rewrite to Single build job with matrix * Remove shebang from docker_common * Attempt for fix build matrix * Remove setup arch * build matrix for docker push * Use 2vcpu for arm build * 2vcpu for docker_push too * temporarly unlock docker_push * Remove requirement for target arch when pushing * Unset target architecture in docker_push cl * fix sha tags * Rename action to compile-openpilot * move push_image line to tag_multiarch step * arch suffix for scons cache * cache_key_prefix for setup-with-retry * Re-disable docker_push on non-master * Add newlinespull/29850/head
							parent
							
								
									fb1b1f15aa
								
							
						
					
					
						commit
						1344a93a35
					
				
				 7 changed files with 138 additions and 55 deletions
			
			
		| @ -0,0 +1,27 @@ | ||||
| name: 'compile openpilot' | ||||
| 
 | ||||
| inputs: | ||||
|   cache_key_prefix: | ||||
|     description: 'Prefix for caching key' | ||||
|     required: false | ||||
|     default: 'scons' | ||||
| 
 | ||||
| runs: | ||||
|   using: "composite" | ||||
|   steps: | ||||
|     - shell: bash | ||||
|       name: Build openpilot with all flags | ||||
|       run: | | ||||
|         ${{ env.RUN }} "scons -j$(nproc)" | ||||
|         ${{ env.RUN }} "release/check-dirty.sh" | ||||
|     - shell: bash | ||||
|       name: Cleanup scons cache and rebuild | ||||
|       run: | | ||||
|           ${{ env.RUN }} "rm -rf /tmp/scons_cache/* && \ | ||||
|                           scons -j$(nproc) --cache-populate" | ||||
|     - name: Save scons cache | ||||
|       uses: actions/cache/save@v3 | ||||
|       if: github.ref == 'refs/heads/master' | ||||
|       with: | ||||
|         path: .ci_cache/scons_cache | ||||
|         key: ${{ inputs.cache_key_prefix }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }} | ||||
| @ -0,0 +1,27 @@ | ||||
| if [ $1 = "base" ]; then | ||||
|   export DOCKER_IMAGE=openpilot-base | ||||
|   export DOCKER_FILE=Dockerfile.openpilot_base | ||||
| elif [ $1 = "docs" ]; then | ||||
|   export DOCKER_IMAGE=openpilot-docs | ||||
|   export DOCKER_FILE=docs/docker/Dockerfile | ||||
| elif [ $1 = "sim" ]; then | ||||
|   export DOCKER_IMAGE=openpilot-sim | ||||
|   export DOCKER_FILE=tools/sim/Dockerfile.sim | ||||
| elif [ $1 = "prebuilt" ]; then | ||||
|   export DOCKER_IMAGE=openpilot-prebuilt | ||||
|   export DOCKER_FILE=Dockerfile.openpilot | ||||
| elif [ $1 = "cl" ]; then | ||||
|   export DOCKER_IMAGE=openpilot-base-cl | ||||
|   export DOCKER_FILE=Dockerfile.openpilot_base_cl | ||||
| else | ||||
|   echo "Invalid docker build image $1" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| export DOCKER_REGISTRY=ghcr.io/commaai | ||||
| export COMMIT_SHA=$(git rev-parse HEAD) | ||||
| 
 | ||||
| TAG_SUFFIX=$2 | ||||
| LOCAL_TAG=$DOCKER_IMAGE$TAG_SUFFIX | ||||
| REMOTE_TAG=$DOCKER_REGISTRY/$LOCAL_TAG | ||||
| REMOTE_SHA_TAG=$DOCKER_REGISTRY/$LOCAL_TAG:$COMMIT_SHA | ||||
| @ -0,0 +1,25 @@ | ||||
| #!/usr/bin/env bash | ||||
| set -e | ||||
| 
 | ||||
| if [ $# -lt 2 ]; then | ||||
|   echo "Usage: $0 <base|docs|sim|prebuilt|cl> <arch1> <arch2> ..." | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| SCRIPT_DIR=$(dirname "$0") | ||||
| ARCHS=("${@:2}") | ||||
| 
 | ||||
| source $SCRIPT_DIR/docker_common.sh $1 | ||||
| 
 | ||||
| MANIFEST_AMENDS="" | ||||
| for ARCH in ${ARCHS[@]}; do | ||||
|   MANIFEST_AMENDS="$MANIFEST_AMENDS --amend $REMOTE_TAG-$ARCH:$COMMIT_SHA" | ||||
| done | ||||
| 
 | ||||
| docker manifest create $REMOTE_TAG $MANIFEST_AMENDS | ||||
| docker manifest create $REMOTE_SHA_TAG $MANIFEST_AMENDS | ||||
| 
 | ||||
| if [[ -n "$PUSH_IMAGE" ]]; then | ||||
|   docker manifest push $REMOTE_TAG | ||||
|   docker manifest push $REMOTE_SHA_TAG | ||||
| fi | ||||
					Loading…
					
					
				
		Reference in new issue