From ab853e80ccb92a6e53899efeb25d357e628a763c Mon Sep 17 00:00:00 2001 From: Dmytro Shteflyuk Date: Tue, 2 Jun 2026 19:56:27 -0400 Subject: [PATCH] THRIFT-5000: Use per-version Docker build contexts --- docker/0.22.0/Dockerfile | 4 ++-- docker/0.22.0/Dockerfile.alpine | 4 ++-- docker/0.22.0/docker-entrypoint.sh | 10 ++++++++++ docker/0.23.0/Dockerfile | 4 ++-- docker/0.23.0/Dockerfile.alpine | 4 ++-- docker/0.23.0/docker-entrypoint.sh | 10 ++++++++++ docker/generate-stackbrew-library.sh | 8 ++++---- docker/test.sh | 8 +++++--- 8 files changed, 37 insertions(+), 15 deletions(-) create mode 100755 docker/0.22.0/docker-entrypoint.sh create mode 100755 docker/0.23.0/docker-entrypoint.sh diff --git a/docker/0.22.0/Dockerfile b/docker/0.22.0/Dockerfile index b8b8b1e004c..df2e58a4521 100644 --- a/docker/0.22.0/Dockerfile +++ b/docker/0.22.0/Dockerfile @@ -62,11 +62,11 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/* COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift -COPY ../docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh -COPY ../tests/smoke.thrift /tmp/smoke.thrift +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN set -eux; \ thrift --version | grep -F "$THRIFT_VERSION"; \ + echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \ mkdir -p /tmp/smoke-out; \ thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \ find /tmp/smoke-out -type f | grep -q .; \ diff --git a/docker/0.22.0/Dockerfile.alpine b/docker/0.22.0/Dockerfile.alpine index 41d5292d4ab..8d996131645 100644 --- a/docker/0.22.0/Dockerfile.alpine +++ b/docker/0.22.0/Dockerfile.alpine @@ -58,11 +58,11 @@ RUN set -eux; \ apk add --no-cache libstdc++ COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift -COPY ../docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh -COPY ../tests/smoke.thrift /tmp/smoke.thrift +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN set -eux; \ thrift --version | grep -F "$THRIFT_VERSION"; \ + echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \ mkdir -p /tmp/smoke-out; \ thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \ find /tmp/smoke-out -type f | grep -q .; \ diff --git a/docker/0.22.0/docker-entrypoint.sh b/docker/0.22.0/docker-entrypoint.sh new file mode 100755 index 00000000000..ac3ccae3954 --- /dev/null +++ b/docker/0.22.0/docker-entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +if [ "$#" -eq 0 ]; then + set -- thrift +elif [ "${1#-}" != "$1" ]; then + set -- thrift "$@" +fi + +exec "$@" diff --git a/docker/0.23.0/Dockerfile b/docker/0.23.0/Dockerfile index 93f67bd973e..33e4ddd421e 100644 --- a/docker/0.23.0/Dockerfile +++ b/docker/0.23.0/Dockerfile @@ -62,11 +62,11 @@ RUN set -eux; \ rm -rf /var/lib/apt/lists/* COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift -COPY ../docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh -COPY ../tests/smoke.thrift /tmp/smoke.thrift +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN set -eux; \ thrift --version | grep -F "$THRIFT_VERSION"; \ + echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \ mkdir -p /tmp/smoke-out; \ thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \ find /tmp/smoke-out -type f | grep -q .; \ diff --git a/docker/0.23.0/Dockerfile.alpine b/docker/0.23.0/Dockerfile.alpine index a54d25b6ab5..f5efcbf29d4 100644 --- a/docker/0.23.0/Dockerfile.alpine +++ b/docker/0.23.0/Dockerfile.alpine @@ -58,11 +58,11 @@ RUN set -eux; \ apk add --no-cache libstdc++ COPY --from=builder /opt/thrift/bin/thrift /usr/local/bin/thrift -COPY ../docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh -COPY ../tests/smoke.thrift /tmp/smoke.thrift +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN set -eux; \ thrift --version | grep -F "$THRIFT_VERSION"; \ + echo 'struct Ping { 1: string message }' > /tmp/smoke.thrift; \ mkdir -p /tmp/smoke-out; \ thrift --gen json -o /tmp/smoke-out /tmp/smoke.thrift; \ find /tmp/smoke-out -type f | grep -q .; \ diff --git a/docker/0.23.0/docker-entrypoint.sh b/docker/0.23.0/docker-entrypoint.sh new file mode 100755 index 00000000000..ac3ccae3954 --- /dev/null +++ b/docker/0.23.0/docker-entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +if [ "$#" -eq 0 ]; then + set -- thrift +elif [ "${1#-}" != "$1" ]; then + set -- thrift "$@" +fi + +exec "$@" diff --git a/docker/generate-stackbrew-library.sh b/docker/generate-stackbrew-library.sh index b18b2b3d029..82ec30fed08 100755 --- a/docker/generate-stackbrew-library.sh +++ b/docker/generate-stackbrew-library.sh @@ -68,8 +68,8 @@ for version, meta in maintained: print(f"Tags: {', '.join(debian_tags)}") print("Architectures: amd64, arm64v8") print(f"GitCommit: {git_commit}") - print("Directory: docker") - print(f"File: {version}/Dockerfile") + print(f"Directory: docker/{version}") + print("File: Dockerfile") print() alpine_tags = [f"{version}-alpine{alpine}"] @@ -86,8 +86,8 @@ for version, meta in maintained: print(f"Tags: {', '.join(alpine_tags)}") print("Architectures: amd64, arm64v8") print(f"GitCommit: {git_commit}") - print("Directory: docker") - print(f"File: {version}/Dockerfile.alpine") + print(f"Directory: docker/{version}") + print("File: Dockerfile.alpine") if version != maintained[-1][0]: print() PY diff --git a/docker/test.sh b/docker/test.sh index d72f128367d..33c8972f871 100755 --- a/docker/test.sh +++ b/docker/test.sh @@ -110,16 +110,18 @@ for version in $(maintained_versions); do for variant in debian alpine; do case "$variant" in debian) - dockerfile="$version/Dockerfile" + context="$version" + dockerfile="Dockerfile" ;; alpine) - dockerfile="$version/Dockerfile.alpine" + context="$version" + dockerfile="Dockerfile.alpine" ;; esac image="$(image_tag "$version" "$variant" "$platform")" echo "Building $image for $platform" - docker buildx build --platform "$platform" --load -t "$image" -f "$dockerfile" . + docker buildx build --platform "$platform" --load -t "$image" -f "$context/$dockerfile" "$context" echo "Testing $image for $platform" smoke_image "$image" "$platform" "$version" "$variant" done