From ee24a36c4fbe0585d9b03ac286e8fea5e7f7c899 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Thu, 14 Dec 2023 22:26:38 +0100 Subject: [PATCH] enable golangci-lint for supported platforms Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- .github/workflows/validate.yml | 2 ++ .golangci.yml | 2 +- docker-bake.hcl | 14 ++++++++++++++ hack/dockerfiles/lint.Dockerfile | 9 +++++++-- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 200a2083956..63aa48752a9 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -19,6 +19,8 @@ on: jobs: validate: runs-on: ubuntu-22.04 + env: + GOLANGCI_LINT_MULTIPLATFORM: 1 strategy: fail-fast: false matrix: diff --git a/.golangci.yml b/.golangci.yml index f4d908f989a..b0231cd5fc5 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,5 +1,5 @@ run: - timeout: 10m + timeout: 30m skip-files: - ".*\\.pb\\.go$" diff --git a/docker-bake.hcl b/docker-bake.hcl index 8b62bf6937a..435d8df70ab 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -7,6 +7,9 @@ variable "DOCS_FORMATS" { variable "DESTDIR" { default = "./bin" } +variable "GOLANGCI_LINT_MULTIPLATFORM" { + default = null +} # Special target: https://github.com/docker/metadata-action#bake-definition target "meta-helper" { @@ -32,6 +35,17 @@ target "lint" { inherits = ["_common"] dockerfile = "./hack/dockerfiles/lint.Dockerfile" output = ["type=cacheonly"] + platforms = GOLANGCI_LINT_MULTIPLATFORM != null ? [ + "darwin/amd64", + "darwin/arm64", + "linux/amd64", + "linux/arm64", + "linux/s390x", + "linux/ppc64le", + "linux/riscv64", + "windows/amd64", + "windows/arm64" + ] : [] } target "validate-vendor" { diff --git a/hack/dockerfiles/lint.Dockerfile b/hack/dockerfiles/lint.Dockerfile index 7e46879dd26..78e004418c7 100644 --- a/hack/dockerfiles/lint.Dockerfile +++ b/hack/dockerfiles/lint.Dockerfile @@ -1,14 +1,19 @@ # syntax=docker/dockerfile:1 ARG GO_VERSION=1.21.3 +ARG XX_VERSION=1.3.0 ARG GOLANGCI_LINT_VERSION=1.54.2 -FROM golang:${GO_VERSION}-alpine +FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx +FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine RUN apk add --no-cache git gcc musl-dev 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} +COPY --link --from=xx / / WORKDIR /go/src/github.com/docker/buildx +ARG TARGETPLATFORM RUN --mount=target=/go/src/github.com/docker/buildx \ - --mount=target=/root/.cache,type=cache \ + --mount=target=/root/.cache,type=cache,id=lint-cache-$TARGETPLATFORM \ + xx-go --wrap && \ golangci-lint run