# Lint stage — fast feedback on formatting and lint issues # golangci/golangci-lint:v2.0.2 (2026-03-14) FROM golangci/golangci-lint@sha256:d55581f7797e7a0877a7c3aaa399b01bdc57d2874d6412601a046cc4062cb62e AS lint WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . # Touch .pb.go so make does not try to regenerate via protoc (file is committed) RUN touch mfer/mf.pb.go RUN make fmt-check RUN make lint # Build stage — tests and compilation # golang:1.23 (2026-03-14) FROM golang@sha256:60deed95d3888cc5e4d9ff8a10c54e5edc008c6ae3fba6187be6fb592e19e8c0 AS builder # Force BuildKit to run the lint stage by creating a stage dependency COPY --from=lint /src/go.sum /dev/null WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . # Touch .pb.go so make does not try to regenerate via protoc (file is committed) RUN touch mfer/mf.pb.go RUN make test RUN cd cmd/mfer && go build -tags urfave_cli_no_docs -o /mfer . FROM scratch COPY --from=builder /mfer /mfer ENTRYPOINT ["/mfer"]