FROM golang:1.24.4 AS tests-builder COPY . /app/ WORKDIR /app RUN mkdir bin ENV GOMODCACHE=/cache/gomod ENV GOCACHE=/cache/gobuild ARG GIT_COMMIT=HEAD ARG EXTRA_BUILD_FLAGS= ARG GO_LDFLAGS="-s -w" RUN --mount=type=cache,target=/cache/gomod --mount=type=cache,target=/cache/gobuild,sharing=locked env GOFLAGS="-mod=vendor" CGO_ENABLED=0 go build -C cmd/server -ldflags="${GO_LDFLAGS} -X main.GitCommit=${GIT_COMMIT}" ${EXTRA_BUILD_FLAGS} -o ../../bin/server RUN --mount=type=cache,target=/cache/gomod --mount=type=cache,target=/cache/gobuild,sharing=locked env GOFLAGS="-mod=vendor" CGO_ENABLED=0 go test -c -cover -covermode=atomic ${EXTRA_BUILD_FLAGS} -o tests/ $(go list ${EXTRA_BUILD_FLAGS} -f '{{if .TestGoFiles}}{{.ImportPath}}{{end}}' ./...) -coverpkg=$(shell go list ${EXTRA_BUILD_FLAGS} ./... | paste -sd, -) FROM debian:stable-slim COPY --from=tests-builder /app/bin/server /app/bin/server COPY --from=tests-builder /app/tests /app/tests COPY --from=tests-builder /app/docker /app/docker WORKDIR /app CMD ["/bin/sh", "/app/docker/run-tests.sh"]