#!/bin/bash set -e # To build sim and docs, you can run the following to mount the scons cache to the same place as in CI: # mkdir -p .ci_cache/scons_cache # sudo mount --bind /tmp/scons_cache/ .ci_cache/scons_cache 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) LOCAL_TAG=$DOCKER_IMAGE REMOTE_TAG=$DOCKER_REGISTRY/$LOCAL_TAG REMOTE_SHA_TAG=$REMOTE_TAG:$COMMIT_SHA SCRIPT_DIR=$(dirname "$0") OPENPILOT_DIR=$SCRIPT_DIR/../../ DOCKER_BUILDKIT=1 docker buildx build --load --cache-to type=inline --cache-from type=registry,ref=$REMOTE_TAG -t $REMOTE_TAG -t $LOCAL_TAG -f $OPENPILOT_DIR/$DOCKER_FILE $OPENPILOT_DIR if [[ ! -z "$PUSH_IMAGE" ]]; then docker push $REMOTE_TAG docker tag $REMOTE_TAG $REMOTE_SHA_TAG docker push $REMOTE_SHA_TAG fi