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 newlines
old-commit-hash: 1344a93a35
test-msgs
parent
c37ccd4565
commit
f8c6ebd3ad
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