Skip to content

Commit 7208073

Browse files
Run make lint in a docker container like in k0s
Golangci-lint <1.58.0 doesn't work because mdm, and >=1.58.0 have several linter issues. I tried older versions of golang too but I couldn't find a working combination. Lint has been broken for a while, merge this as is and fix the linting issues in separate PR. Signed-off-by: Juan-Luis de Sousa-Valadas Castaño <[email protected]>
1 parent b8e3aae commit 7208073

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
/build/cache/*
12
test/rigtest
23
test/footloose.yaml
34
test/Library
45
test/.ssh
56
test/*.iid
7+
/.rigbuild.docker-image.k0s

Makefile

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,38 @@
11
GO_TESTS := $(shell find . -type f -name '*_test.go')
22
INT_TESTS := $(shell git ls-files test/)
33

4+
alpine_version = 3.21
5+
alpine_patch_version = $(alpine_version).3
6+
go_version = 1.24.2
7+
golang_buildimage=docker.io/library/golang:$(go_version)-alpine$(alpine_version)
8+
9+
GOLANG_IMAGE ?= $(golang_buildimage)
10+
11+
RIG_GO_BUILD_CACHE ?= build/cache
12+
DOCKER ?= docker
13+
BUILD_UID ?= $(shell id -u)
14+
BUILD_GID ?= $(shell id -g)
15+
16+
$(RIG_GO_BUILD_CACHE):
17+
mkdir -p -- '$@'
18+
19+
.rigbuild.docker-image.k0s: build/Dockerfile | $(RIG_GO_BUILD_CACHE)
20+
$(DOCKER) build --progress=plain --iidfile '$@' \
21+
--build-arg BUILDIMAGE=$(GOLANG_IMAGE) \
22+
-t rigbuild.docker-image.k0s - <build/Dockerfile
23+
24+
GO_ENV ?= $(DOCKER) run --rm \
25+
-v '$(realpath $(RIG_GO_BUILD_CACHE))':/run/k0s-build \
26+
-v '$(CURDIR)':/go/src/github.com/k0sproject/rig \
27+
-w /go/src/github.com/k0sproject/rig \
28+
-e GOOS \
29+
-e CGO_ENABLED \
30+
-e CGO_CFLAGS \
31+
-e GOARCH \
32+
--user $(BUILD_UID):$(BUILD_GID) \
33+
-- '$(shell cat .rigbuild.docker-image.k0s)'
34+
GO ?= $(GO_ENV) go
35+
436
gotest := $(shell which gotest)
537
ifeq ($(gotest),)
638
gotest := go test
@@ -21,6 +53,6 @@ fixparam :=
2153
endif
2254

2355
.PHONY: lint
24-
lint:
25-
golangci-lint run -v $(fixparam)
26-
56+
lint: .rigbuild.docker-image.k0s
57+
$(GO) install github.com/golangci/golangci-lint/cmd/[email protected] # versions prior to 1.58.0 fail because mdm and newer versions have several linting errors...
58+
$(GO_ENV) golangci-lint run --verbose --build-tags=$(subst $(space),$(comma),$(BUILD_GO_TAGS)) $(GOLANGCI_LINT_FLAGS) $(GO_LINT_DIRS) -v $(fixparam)

build/Dockerfile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
ARG BUILDIMAGE
2+
FROM $BUILDIMAGE
3+
4+
ARG TARGETARCH
5+
RUN set -ex; \
6+
if [ ! -z "$(which apt)" ]; then \
7+
apt update && apt install -y git; \
8+
elif [ ! -z "$(which apk)" ]; then \
9+
apk add --no-cache git; \
10+
else \
11+
echo "unsupported package manager"; \
12+
exit 1; \
13+
fi
14+
15+
16+
ENV \
17+
HOME="/run/k0s-build" \
18+
PATH="/run/k0s-build/go/bin:$PATH" \
19+
GOBIN="/run/k0s-build/go/bin" \
20+
GOCACHE="/run/k0s-build/go/build" \
21+
GOMODCACHE="/run/k0s-build/go/mod" \
22+
GOTELEMETRY="off"

0 commit comments

Comments
 (0)