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