77
88# DOCKER_PLATFORM - Target platform (optional)
99# DOCKER_BUILDER - Buildx builder name (default: auto-select)
10+ # DOCKER_CACHE_FROM - Explicit --cache-from value (e.g. type=registry,ref=...)
11+ # DOCKER_CACHE_TO - Explicit --cache-to value (e.g. type=registry,ref=...,mode=max)
12+ # DOCKER_PUSH - When set to "1", push instead of loading into local daemon
13+ # IMAGE_REGISTRY - Registry prefix for image name (e.g. ghcr.io/org/repo)
1014set -euo pipefail
1115
1216IMAGE_TAG=${IMAGE_TAG:- dev}
17+ IMAGE_NAME=" navigator/cluster"
18+ if [[ -n " ${IMAGE_REGISTRY:- } " ]]; then
19+ IMAGE_NAME=" ${IMAGE_REGISTRY} /cluster"
20+ fi
1321DOCKER_BUILD_CACHE_DIR=${DOCKER_BUILD_CACHE_DIR:- .cache/ buildkit}
1422CACHE_PATH=" ${DOCKER_BUILD_CACHE_DIR} /cluster"
1523
@@ -26,13 +34,18 @@ elif [[ -z "${DOCKER_PLATFORM:-}" && -z "${CI:-}" ]]; then
2634fi
2735
2836CACHE_ARGS=()
29- if [[ -n " ${CI:- } " ]]; then
30- echo " CI environment detected; skipping local build cache export options."
31- elif docker buildx inspect ${BUILDER_ARGS[@]+" ${BUILDER_ARGS[@]} " } 2> /dev/null | grep -q " Driver: docker-container" ; then
32- CACHE_ARGS=(
33- --cache-from " type=local,src=${CACHE_PATH} "
34- --cache-to " type=local,dest=${CACHE_PATH} ,mode=max"
35- )
37+ if [[ -n " ${DOCKER_CACHE_FROM:- } " || -n " ${DOCKER_CACHE_TO:- } " ]]; then
38+ # Explicit cache configuration from the caller (e.g. CI registry cache).
39+ [[ -n " ${DOCKER_CACHE_FROM:- } " ]] && CACHE_ARGS+=(--cache-from " ${DOCKER_CACHE_FROM} " )
40+ [[ -n " ${DOCKER_CACHE_TO:- } " ]] && CACHE_ARGS+=(--cache-to " ${DOCKER_CACHE_TO} " )
41+ elif [[ -z " ${CI:- } " ]]; then
42+ # Local development: use filesystem cache with docker-container driver.
43+ if docker buildx inspect ${BUILDER_ARGS[@]+" ${BUILDER_ARGS[@]} " } 2> /dev/null | grep -q " Driver: docker-container" ; then
44+ CACHE_ARGS=(
45+ --cache-from " type=local,src=${CACHE_PATH} "
46+ --cache-to " type=local,dest=${CACHE_PATH} ,mode=max"
47+ )
48+ fi
3649fi
3750
3851# Create build directory for charts
@@ -45,14 +58,20 @@ helm package deploy/helm/navigator -d deploy/docker/.build/charts/
4558# Build cluster image (no bundled component images — they are pulled at runtime
4659# from the distribution registry; credentials are injected at deploy time)
4760echo " Building cluster image..."
61+
62+ OUTPUT_FLAG=" --load"
63+ if [[ " ${DOCKER_PUSH:- } " == " 1" ]]; then
64+ OUTPUT_FLAG=" --push"
65+ fi
66+
4867docker buildx build \
4968 ${BUILDER_ARGS[@]+" ${BUILDER_ARGS[@]} " } \
5069 ${DOCKER_PLATFORM: +--platform ${DOCKER_PLATFORM} } \
5170 ${CACHE_ARGS[@]+" ${CACHE_ARGS[@]} " } \
5271 -f deploy/docker/Dockerfile.cluster \
53- -t navigator/cluster :${IMAGE_TAG} \
72+ -t ${IMAGE_NAME} :${IMAGE_TAG} \
5473 --build-arg K3S_VERSION=${K3S_VERSION} \
55- --load \
74+ ${OUTPUT_FLAG} \
5675 .
5776
58- echo " Done! Cluster image: navigator/cluster :${IMAGE_TAG} "
77+ echo " Done! Cluster image: ${IMAGE_NAME} :${IMAGE_TAG} "
0 commit comments