@@ -4,21 +4,36 @@ ARG GO_VERSION=1.23
44ARG ALPINE_VERSION=3.21
55ARG XX_VERSION=1.6.1
66
7- ARG GOLANGCI_LINT_VERSION=1.62.0
7+ ARG GOLANGCI_LINT_VERSION=v1.62.0
8+ ARG GOLANGCI_FROM_SOURCE=false
89# v0.31 requires go1.24
910ARG GOPLS_VERSION=v0.30.0
1011# disabled: deprecated unusedvariable simplifyrange
1112ARG GOPLS_ANALYZERS="embeddirective fillreturns hostport infertypeargs modernize nonewvars noresultvalues simplifycompositelit simplifyslice unusedparams yield"
1213
1314FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
1415
15- FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS golang- base
16+ FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS base
1617RUN apk add --no-cache git gcc musl-dev
1718
18- FROM golang-base AS lint-base
19+ FROM base AS golangci-build
20+ WORKDIR /src
21+ ARG GOLANGCI_LINT_VERSION
22+ ADD https://github.com/golangci/golangci-lint.git#${GOLANGCI_LINT_VERSION} .
23+ RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/ go mod download
24+ RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/ mkdir -p out && go build -o /out/golangci-lint ./cmd/golangci-lint
25+
26+ FROM scratch AS golangci-binary-false
27+ FROM scratch AS golangci-binary-true
28+ COPY --from=golangci-build /out/golangci-lint golangci-lint
29+ FROM golangci-binary-${GOLANGCI_FROM_SOURCE} AS golangci-binary
30+
31+ FROM base AS lint-base
1932ENV GOFLAGS="-buildvcs=false"
2033ARG GOLANGCI_LINT_VERSION
21- RUN wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v${GOLANGCI_LINT_VERSION}
34+ ARG GOLANGCI_FROM_SOURCE
35+ COPY --link --from=golangci-binary / /usr/bin/
36+ RUN [ "${GOLANGCI_FROM_SOURCE}" = "true" ] && exit 0; wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s ${GOLANGCI_LINT_VERSION}
2237COPY --link --from=xx / /
2338WORKDIR /go/src/github.com/docker/buildx
2439ARG TARGETPLATFORM
@@ -33,7 +48,7 @@ FROM lint-base AS validate-golangci
3348RUN --mount=target=/go/src/github.com/docker/buildx \
3449 golangci-lint config verify
3550
36- FROM golang- base AS gopls
51+ FROM base AS gopls
3752RUN apk add --no-cache git
3853ARG GOPLS_VERSION
3954WORKDIR /src
6176 done
6277EOF
6378
64- FROM golang- base AS gopls-analyze
79+ FROM base AS gopls-analyze
6580COPY --link --from=xx / /
6681ARG GOPLS_ANALYZERS
6782ARG TARGETNAME
0 commit comments