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 ALPINE_VERSION=3.21
|
||||||
ARG XX_VERSION=1.6.1
|
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
|
# v0.31 requires go1.24
|
||||||
ARG GOPLS_VERSION=v0.30.0
|
ARG GOPLS_VERSION=v0.30.0
|
||||||
# disabled: deprecated unusedvariable simplifyrange
|
# 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 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
|
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"
|
ENV GOFLAGS="-buildvcs=false"
|
||||||
ARG GOLANGCI_LINT_VERSION
|
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 / /
|
COPY --link --from=xx / /
|
||||||
WORKDIR /go/src/github.com/docker/buildx
|
WORKDIR /go/src/github.com/docker/buildx
|
||||||
ARG TARGETPLATFORM
|
ARG TARGETPLATFORM
|
||||||
@@ -33,7 +48,7 @@ FROM lint-base AS validate-golangci
|
|||||||
RUN --mount=target=/go/src/github.com/docker/buildx \
|
RUN --mount=target=/go/src/github.com/docker/buildx \
|
||||||
golangci-lint config verify
|
golangci-lint config verify
|
||||||
|
|
||||||
FROM golang-base AS gopls
|
FROM base AS gopls
|
||||||
RUN apk add --no-cache git
|
RUN apk add --no-cache git
|
||||||
ARG GOPLS_VERSION
|
ARG GOPLS_VERSION
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
@@ -61,7 +76,7 @@ eot
|
|||||||
done
|
done
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
FROM golang-base AS gopls-analyze
|
FROM base AS gopls-analyze
|
||||||
COPY --link --from=xx / /
|
COPY --link --from=xx / /
|
||||||
ARG GOPLS_ANALYZERS
|
ARG GOPLS_ANALYZERS
|
||||||
ARG TARGETNAME
|
ARG TARGETNAME
|
||||||
|
|||||||
Reference in New Issue
Block a user