Per reviewer feedback: the Dockerfile now runs 'make check' early in its build process (after dependencies are extracted). The CI workflow is simplified to just run 'docker build .', which implicitly runs 'make check' as part of the Docker build.
39 lines
1.6 KiB
Docker
39 lines
1.6 KiB
Docker
################################################################################
|
|
#2345678911234567892123456789312345678941234567895123456789612345678971234567898
|
|
################################################################################
|
|
FROM sneak/builder:2022-12-08 AS builder
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
WORKDIR /build
|
|
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 make check
|
|
RUN \
|
|
cd mfer && go generate . && cd .. && \
|
|
GOPACKAGESDEBUG=true golangci-lint run ./... && \
|
|
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"]
|