mirror of
https://github.com/crazy-max/diun.git
synced 2025-12-21 13:23:09 +01:00
hack: golangci build from source support
This commit is contained in:
@@ -16,6 +16,10 @@ variable "GOLANGCI_LINT_MULTIPLATFORM" {
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "GOLANGCI_FROM_SOURCE" {
|
||||
default = null
|
||||
}
|
||||
|
||||
target "_common" {
|
||||
args = {
|
||||
GO_VERSION = GO_VERSION
|
||||
@@ -134,6 +138,9 @@ target "lint" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "./hack/lint.Dockerfile"
|
||||
target = "lint"
|
||||
args = {
|
||||
GOLANGCI_FROM_SOURCE = GOLANGCI_FROM_SOURCE
|
||||
}
|
||||
output = ["type=cacheonly"]
|
||||
platforms = GOLANGCI_LINT_MULTIPLATFORM != null ? [
|
||||
"darwin/amd64",
|
||||
|
||||
@@ -3,20 +3,34 @@
|
||||
ARG GO_VERSION="1.23"
|
||||
ARG XX_VERSION="1.6.1"
|
||||
ARG ALPINE_VERSION="3.21"
|
||||
ARG GOLANGCI_LINT_VERSION="v1.62"
|
||||
ARG GOLANGCI_LINT_VERSION="v1.62.2"
|
||||
ARG GOLANGCI_FROM_SOURCE="false"
|
||||
|
||||
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
|
||||
|
||||
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS base
|
||||
ENV GOFLAGS="-buildvcs=false"
|
||||
RUN apk add --no-cache gcc linux-headers musl-dev
|
||||
COPY --from=xx --link / /
|
||||
WORKDIR /src
|
||||
|
||||
FROM base AS golangci-build
|
||||
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 --platform=$BUILDPLATFORM golangci/golangci-lint:${GOLANGCI_LINT_VERSION}-alpine AS golangci-lint
|
||||
FROM scratch AS golangci-binary-false
|
||||
COPY --from=golangci-lint /usr/bin/golangci-lint golangci-lint
|
||||
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
|
||||
ARG TARGETPLATFORM
|
||||
RUN --mount=type=bind,target=. \
|
||||
--mount=type=cache,target=/root/.cache,id=lint-cache-$TARGETPLATFORM \
|
||||
--mount=from=golangci-lint,source=/usr/bin/golangci-lint,target=/usr/bin/golangci-lint \
|
||||
--mount=from=golangci-binary,source=/golangci-lint,target=/usr/bin/golangci-lint \
|
||||
xx-go --wrap && \
|
||||
golangci-lint run ./...
|
||||
|
||||
Reference in New Issue
Block a user