From f7b34793f2e9f2b802acb156c1a7274b04ecba88 Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Sun, 24 May 2026 07:21:56 +0000 Subject: [PATCH] test_locally.sh: use docker buildx (or DOCKER_BUILDKIT=1) for the build The Dockerfile uses BuildKit-only features (the # syntax=docker/dockerfile:1.7 parser directive and RUN ... <<'PY' heredocs added in dockerfile 1.3+). The legacy builder rejects the --progress flag at the CLI level and would fail later at the heredocs anyway. Detect docker buildx and use it when available (preserves --progress=plain output). Otherwise fall back to plain `docker build` with DOCKER_BUILDKIT=1 exported, which gets the BuildKit features without buildx's nicer formatting. Reproduces the failure path seen on Docker 28.2.2 without buildx installed: unknown flag: --progress ERROR docker build exited 125 --- docker/test_locally.sh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docker/test_locally.sh b/docker/test_locally.sh index 8457a39539..68a27c23bb 100755 --- a/docker/test_locally.sh +++ b/docker/test_locally.sh @@ -96,8 +96,22 @@ else BUILD_LOG="$LOG_DIR/build.log" echo " log: $BUILD_LOG" - docker build --progress=plain -t "$TAG" "$BUILD_CTX" 2>&1 | tee "$BUILD_LOG" - rc=${PIPESTATUS[0]} + + # The Dockerfile uses BuildKit-only features ('# syntax=docker/dockerfile:1.7' + # and 'RUN ... <<\'PY\'' heredocs). The legacy builder rejects --progress and + # would fail at parse time on the heredocs anyway. Prefer buildx; fall back to + # DOCKER_BUILDKIT=1 + plain docker build for hosts without buildx installed. + if docker buildx version >/dev/null 2>&1; then + echo " builder: docker buildx" + docker buildx build --progress=plain --load -t "$TAG" "$BUILD_CTX" 2>&1 | tee "$BUILD_LOG" + rc=${PIPESTATUS[0]} + else + echo " builder: DOCKER_BUILDKIT=1 docker build (legacy fallback)" + warn "docker buildx not available -- install for cleaner build output:" + warn " https://docs.docker.com/go/buildx/" + DOCKER_BUILDKIT=1 docker build -t "$TAG" "$BUILD_CTX" 2>&1 | tee "$BUILD_LOG" + rc=${PIPESTATUS[0]} + fi if [[ $rc -ne 0 ]]; then fail "docker build exited $rc -- see $BUILD_LOG" fi