diff --git a/.golangci.yml b/.golangci.yml index cab089b..baaa794 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -29,6 +29,13 @@ linters: - unconvert - govet - unused + exclusions: + rules: + # Test files commonly repeat literal fixtures (hosts, paths, resource names); + # extracting them into constants hurts readability more than it helps. + - path: _test\.go + linters: + - goconst formatters: enable: diff --git a/Makefile b/Makefile index 1432f2c..f883e21 100644 --- a/Makefile +++ b/Makefile @@ -70,21 +70,33 @@ push-docker-images: # tools get built with the specified OS/arch and inject version GO_BUILD_TOOL_WORKDIR = /scaler -GOLANGCI_LINT_VERSION := v2.7.2 +GOLANGCI_LINT_VERSION := 2.12.1 +GOLANGCI_LINT_BIN := .bin/golangci-lint +GOLANGCI_LINT_INSTALL_COMMAND := curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b .bin v$(GOLANGCI_LINT_VERSION) + +.PHONY: ensure-golangci-linter +ensure-golangci-linter: + @if ! command -v $(GOLANGCI_LINT_BIN) >/dev/null 2>&1; then \ + echo "golangci-lint not found. Installing..."; \ + $(GOLANGCI_LINT_INSTALL_COMMAND); \ + else \ + installed_version=$$($(GOLANGCI_LINT_BIN) version | awk '/version/ {gsub(/^v/, "", $$4); print $$4}'); \ + if [ "$$installed_version" != "$(GOLANGCI_LINT_VERSION)" ]; then \ + echo "golangci-lint version mismatch ($$installed_version != $(GOLANGCI_LINT_VERSION)). Reinstalling..."; \ + $(GOLANGCI_LINT_INSTALL_COMMAND); \ + fi \ + fi .PHONY: lint -lint: modules - @test -e .bin/golangci-lint || \ - (curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b .bin $(GOLANGCI_LINT_VERSION)) - +lint: modules ensure-golangci-linter @echo Linting... - .bin/golangci-lint run -v + $(GOLANGCI_LINT_BIN) run -v @echo Done. .PHONY: fmt -fmt: +fmt: ensure-golangci-linter gofmt -s -w . - .bin/golangci-lint run --fix ./... + $(GOLANGCI_LINT_BIN) run --fix ./... .PHONY: test-undockerized test-undockerized: modules diff --git a/cmd/autoscaler/Dockerfile b/cmd/autoscaler/Dockerfile index 4e9bc83..450cce0 100644 --- a/cmd/autoscaler/Dockerfile +++ b/cmd/autoscaler/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # -FROM gcr.io/iguazio/golang:1.25-alpine AS builder +FROM gcr.io/iguazio/golang:1.26-alpine AS builder RUN apk --update --no-cache add \ git \ @@ -30,6 +30,6 @@ COPY . . RUN GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-s -w" -o autoscaler cmd/autoscaler/main.go -FROM gcr.io/iguazio/alpine:3.18 +FROM gcr.io/iguazio/alpine:3.23 COPY --from=builder /autoscaler/autoscaler /home/v3io/bin/autoscaler diff --git a/cmd/dlx/Dockerfile b/cmd/dlx/Dockerfile index 07492e3..28dfaf5 100644 --- a/cmd/dlx/Dockerfile +++ b/cmd/dlx/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # -FROM gcr.io/iguazio/golang:1.25-alpine AS builder +FROM gcr.io/iguazio/golang:1.26-alpine AS builder RUN apk --update --no-cache add \ git \ @@ -30,6 +30,6 @@ COPY . . RUN GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-s -w" -o dlx cmd/dlx/main.go -FROM gcr.io/iguazio/alpine:3.18 +FROM gcr.io/iguazio/alpine:3.23 COPY --from=builder /dlx/dlx /home/v3io/bin/dlx diff --git a/go.mod b/go.mod index bbbcba3..cab451f 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/v3io/scaler -go 1.25.5 +go 1.26.3 require ( github.com/dghubble/trie v0.1.0 @@ -46,11 +46,11 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.34.0 // indirect - golang.org/x/sys v0.39.0 // indirect - golang.org/x/term v0.38.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/term v0.43.0 // indirect + golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.12.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index ecfc685..365e382 100644 --- a/go.sum +++ b/go.sum @@ -118,8 +118,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -128,22 +128,22 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= -golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= +golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= -golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/test/Dockerfile b/test/Dockerfile index d36fe03..f2c3ed0 100644 --- a/test/Dockerfile +++ b/test/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # -FROM gcr.io/iguazio/golang:1.25 +FROM gcr.io/iguazio/golang:1.26 ARG DOCKER_CLI_VERSION="28.0.4"