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