hack: golangci build from source support
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
@@ -4,7 +4,8 @@ ARG GO_VERSION=1.23
|
||||
ARG ALPINE_VERSION=3.21
|
||||
ARG XX_VERSION=1.6.1
|
||||
|
||||
ARG GOLANGCI_LINT_VERSION=1.62.0
|
||||
ARG GOLANGCI_LINT_VERSION=v1.62.0
|
||||
ARG GOLANGCI_FROM_SOURCE=false
|
||||
# v0.31 requires go1.24
|
||||
ARG GOPLS_VERSION=v0.30.0
|
||||
# disabled: deprecated unusedvariable simplifyrange
|
||||
@@ -12,13 +13,27 @@ ARG GOPLS_ANALYZERS="embeddirective fillreturns hostport infertypeargs modernize
|
||||
|
||||
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
|
||||
|
||||
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS golang-base
|
||||
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS base
|
||||
RUN apk add --no-cache git gcc musl-dev
|
||||
|
||||
FROM golang-base AS lint-base
|
||||
FROM base AS golangci-build
|
||||
WORKDIR /src
|
||||
ARG GOLANGCI_LINT_VERSION
|
||||
ADD https://github.com/golangci/golangci-lint.git#${GOLANGCI_LINT_VERSION} .
|
||||
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/ go mod download
|
||||
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
|
||||
|
||||
FROM scratch AS golangci-binary-false
|
||||
FROM scratch AS golangci-binary-true
|
||||
COPY --from=golangci-build /out/golangci-lint golangci-lint
|
||||
FROM golangci-binary-${GOLANGCI_FROM_SOURCE} AS golangci-binary
|
||||
|
||||
FROM base AS lint-base
|
||||
ENV GOFLAGS="-buildvcs=false"
|
||||
ARG GOLANGCI_LINT_VERSION
|
||||
RUN wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v${GOLANGCI_LINT_VERSION}
|
||||
ARG GOLANGCI_FROM_SOURCE
|
||||
COPY --link --from=golangci-binary / /usr/bin/
|
||||
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}
|
||||
COPY --link --from=xx / /
|
||||
WORKDIR /go/src/github.com/docker/buildx
|
||||
ARG TARGETPLATFORM
|
||||
@@ -33,7 +48,7 @@ FROM lint-base AS validate-golangci
|
||||
RUN --mount=target=/go/src/github.com/docker/buildx \
|
||||
golangci-lint config verify
|
||||
|
||||
FROM golang-base AS gopls
|
||||
FROM base AS gopls
|
||||
RUN apk add --no-cache git
|
||||
ARG GOPLS_VERSION
|
||||
WORKDIR /src
|
||||
@@ -61,7 +76,7 @@ eot
|
||||
done
|
||||
EOF
|
||||
|
||||
FROM golang-base AS gopls-analyze
|
||||
FROM base AS gopls-analyze
|
||||
COPY --link --from=xx / /
|
||||
ARG GOPLS_ANALYZERS
|
||||
ARG TARGETNAME
|
||||
|
||||
Reference in New Issue
Block a user