diff --git a/scripts/lib_build_antithesis_images.sh b/scripts/lib_build_antithesis_images.sh index 0ab36a0bcdf3..d006836be67a 100644 --- a/scripts/lib_build_antithesis_images.sh +++ b/scripts/lib_build_antithesis_images.sh @@ -16,6 +16,7 @@ function build_antithesis_builder_image { local image_name=$2 local avalanchego_path=$3 local target_path=$4 + local module_path=${5:-} local base_dockerfile="${avalanchego_path}/tests/antithesis/Dockerfile" local builder_dockerfile="${base_dockerfile}.builder-instrumented" @@ -25,7 +26,8 @@ function build_antithesis_builder_image { builder_dockerfile="${base_dockerfile}.builder-uninstrumented" fi - docker buildx build --build-arg GO_VERSION="${go_version}" -t "${image_name}" -f "${builder_dockerfile}" "${target_path}" + docker buildx build --build-arg GO_VERSION="${go_version}" --build-arg=MODULE_PATH="${module_path}" \ + -t "${image_name}" -f "${builder_dockerfile}" "${target_path}" } # Build the antithesis node, workload, and config images. diff --git a/tests/antithesis/Dockerfile.builder-uninstrumented b/tests/antithesis/Dockerfile.builder-uninstrumented index 4ff06603d96c..4e9426b27898 100644 --- a/tests/antithesis/Dockerfile.builder-uninstrumented +++ b/tests/antithesis/Dockerfile.builder-uninstrumented @@ -5,13 +5,20 @@ ARG GO_VERSION FROM golang:$GO_VERSION-bullseye WORKDIR /build -# Copy and download dependencies using go mod -COPY go.mod . -COPY go.sum . -RUN go mod download # Copy the code into the container COPY . . +# Providing a non-empty MODULE_PATH supports the case where the target module is +# not at the root of the repo but its go.mod references other modules in the repo +# (including the root). +ARG MODULE_PATH + +RUN go mod download + +# Copy and download dependencies using go mod. If MODULE_PATH is set, download the +# dependencies only for that module. +RUN [ -n $MODULE_PATH ]] && (cd $MODULE_PATH && go mod download) + # Ensure pre-existing builds are not available for inclusion in the final image RUN [ -d ./build ] && rm -rf ./build/* || true