################################################################################ #2345678911234567892123456789312345678941234567895123456789612345678971234567898 ################################################################################ # Lint stage — fast feedback on formatting and lint issues # golangci/golangci-lint:v1.64.8 FROM golangci/golangci-lint@sha256:2987913e27f4eca9c8a39129d2c7bc1e74fbcf77f181e01cea607be437aa5cb8 AS lint WORKDIR /src RUN apt-get update && apt-get install -y --no-install-recommends protobuf-compiler && rm -rf /var/lib/apt/lists/* COPY go.mod go.sum ./ RUN go mod download RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 COPY . . RUN cd mfer && go generate . RUN make lint ################################################################################ #2345678911234567892123456789312345678941234567895123456789612345678971234567898 ################################################################################ # Build stage # sneak/builder:2022-12-08 FROM sneak/builder@sha256:d61175320b02b04eb2cada3005833494ce8a4032647e4202dcb3551cf0b56f5a AS builder ENV DEBIAN_FRONTEND noninteractive WORKDIR /build # Force BuildKit to run the lint stage by creating a stage dependency COPY --from=lint /src/go.sum /dev/null COPY ./Makefile ./.golangci.yml ./go.mod ./go.sum /build/ COPY ./vendor.tzst /build/vendor.tzst COPY ./modcache.tzst /build/modcache.tzst COPY ./internal ./internal COPY ./bin/gitrev.sh ./bin/gitrev.sh COPY ./mfer ./mfer COPY ./cmd ./cmd ARG GITREV unknown ARG DRONE_COMMIT_SHA unknown RUN mkdir -p "$(go env GOMODCACHE)" && cd "$(go env GOMODCACHE)" && \ zstdmt -d --stdout /build/modcache.tzst | tar xf - && \ rm /build/modcache.tzst && cd /build RUN \ cd mfer && go generate . && cd .. && \ mkdir vendor && cd vendor && \ zstdmt -d --stdout /build/vendor.tzst | tar xf - && rm /build/vendor.tzst && \ cd .. && \ make mfer.cmd RUN rm -rf /build/vendor && go mod vendor && tar -c . | zstdmt -19 > /src.tzst ################################################################################ #2345678911234567892123456789312345678941234567895123456789612345678971234567898 ################################################################################ ## final image ################################################################################ FROM scratch # we put all the source into the final image for posterity, it's small COPY --from=builder /src.tzst /src.tzst COPY --from=builder /build/mfer.cmd /mfer ENTRYPOINT ["/mfer"]