Skip to content

Commit cb46783

Browse files
committed
Update for Go 1.26
* Update minimum Go version to 1.26.0. * Update tests for Go 1.26.x. Signed-off-by: SuperQ <superq@gmail.com>
1 parent afbd47d commit cb46783

4 files changed

Lines changed: 116 additions & 12 deletions

File tree

.circleci/config.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,14 @@ workflows:
9393
matrix:
9494
parameters:
9595
go_version:
96-
- "1.24"
9796
- "1.25"
97+
- "1.26"
9898
- test-assets:
9999
name: assets-go-<< matrix.go_version >>
100100
matrix:
101101
parameters:
102102
go_version:
103-
- "1.25"
103+
- "1.26"
104104
- style:
105105
name: style
106-
go_version: "1.25"
106+
go_version: "1.26

.github/workflows/golangci-lint.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
name: golangci-lint
44
on:
55
push:
6+
branches: [main, master, 'release-*']
67
paths:
78
- "go.sum"
89
- "go.mod"
910
- "**.go"
1011
- "scripts/errcheck_excludes.txt"
1112
- ".github/workflows/golangci-lint.yml"
1213
- ".golangci.yml"
14+
tags: ['v*']
1315
pull_request:
1416

1517
permissions: # added using https://github.com/step-security/secure-repo
@@ -24,13 +26,13 @@ jobs:
2426
runs-on: ubuntu-latest
2527
steps:
2628
- name: Checkout repository
27-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
29+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2830
with:
2931
persist-credentials: false
3032
- name: Install Go
3133
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
3234
with:
33-
go-version: 1.25.x
35+
go-version: 1.26.x
3436
- name: Install snmp_exporter/generator dependencies
3537
run: sudo apt-get update && sudo apt-get -y install libsnmp-dev
3638
if: github.repository == 'prometheus/snmp_exporter'

Makefile.common

Lines changed: 108 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ ifneq ($(shell command -v gotestsum 2> /dev/null),)
5555
endif
5656
endif
5757

58-
PROMU_VERSION ?= 0.17.0
58+
PROMU_VERSION ?= 0.18.0
5959
PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
6060

6161
SKIP_GOLANGCI_LINT :=
6262
GOLANGCI_LINT :=
6363
GOLANGCI_LINT_OPTS ?=
64-
GOLANGCI_LINT_VERSION ?= v2.7.2
64+
GOLANGCI_LINT_VERSION ?= v2.10.1
6565
GOLANGCI_FMT_OPTS ?=
6666
# golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64.
6767
# windows isn't included here because of the path separator being different.
@@ -109,6 +109,24 @@ endif
109109
# Build variant:dockerfile pairs for shell iteration.
110110
DOCKERFILE_VARIANTS_WITH_NAMES := $(foreach df,$(DOCKERFILE_VARIANTS),$(call dockerfile_variant,$(df)):$(df))
111111

112+
# Shell helper to check whether a dockerfile/arch pair is excluded.
113+
define dockerfile_arch_is_excluded
114+
case " $(DOCKERFILE_ARCH_EXCLUSIONS) " in \
115+
*" $$dockerfile:$(1) "*) true ;; \
116+
*) false ;; \
117+
esac
118+
endef
119+
120+
# Shell helper to check whether a registry/arch pair is excluded.
121+
# Extracts registry from DOCKER_REPO (e.g., quay.io/prometheus -> quay.io)
122+
define registry_arch_is_excluded
123+
registry=$$(echo "$(DOCKER_REPO)" | cut -d'/' -f1); \
124+
case " $(DOCKER_REGISTRY_ARCH_EXCLUSIONS) " in \
125+
*" $$registry:$(1) "*) true ;; \
126+
*) false ;; \
127+
esac
128+
endef
129+
112130
BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS))
113131
PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS))
114132
TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS))
@@ -250,6 +268,10 @@ $(BUILD_DOCKER_ARCHS): common-docker-%:
250268
@for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \
251269
dockerfile=$${variant#*:}; \
252270
variant_name=$${variant%%:*}; \
271+
if $(call dockerfile_arch_is_excluded,$*); then \
272+
echo "Skipping $$variant_name variant for linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
273+
continue; \
274+
fi; \
253275
distroless_arch="$*"; \
254276
if [ "$*" = "armv7" ]; then \
255277
distroless_arch="arm"; \
@@ -284,6 +306,14 @@ $(PUBLISH_DOCKER_ARCHS): common-docker-publish-%:
284306
@for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \
285307
dockerfile=$${variant#*:}; \
286308
variant_name=$${variant%%:*}; \
309+
if $(call dockerfile_arch_is_excluded,$*); then \
310+
echo "Skipping push for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
311+
continue; \
312+
fi; \
313+
if $(call registry_arch_is_excluded,$*); then \
314+
echo "Skipping push for $$variant_name variant on linux-$* to $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
315+
continue; \
316+
fi; \
287317
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
288318
echo "Pushing $$variant_name variant for linux-$*"; \
289319
docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \
@@ -311,6 +341,14 @@ $(TAG_DOCKER_ARCHS): common-docker-tag-latest-%:
311341
@for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \
312342
dockerfile=$${variant#*:}; \
313343
variant_name=$${variant%%:*}; \
344+
if $(call dockerfile_arch_is_excluded,$*); then \
345+
echo "Skipping tag for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
346+
continue; \
347+
fi; \
348+
if $(call registry_arch_is_excluded,$*); then \
349+
echo "Skipping tag for $$variant_name variant on linux-$* for $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
350+
continue; \
351+
fi; \
314352
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
315353
echo "Tagging $$variant_name variant for linux-$* as latest"; \
316354
docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest-$$variant_name"; \
@@ -330,23 +368,87 @@ common-docker-manifest:
330368
variant_name=$${variant%%:*}; \
331369
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
332370
echo "Creating manifest for $$variant_name variant"; \
333-
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name); \
371+
refs=""; \
372+
for arch in $(DOCKER_ARCHS); do \
373+
if $(call dockerfile_arch_is_excluded,$$arch); then \
374+
echo " Skipping $$arch for $$variant_name (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
375+
continue; \
376+
fi; \
377+
if $(call registry_arch_is_excluded,$$arch); then \
378+
echo " Skipping $$arch for $$variant_name on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
379+
continue; \
380+
fi; \
381+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \
382+
done; \
383+
if [ -z "$$refs" ]; then \
384+
echo "Skipping manifest for $$variant_name variant (no supported architectures)"; \
385+
continue; \
386+
fi; \
387+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" $$refs; \
334388
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \
335389
fi; \
336390
if [ "$$dockerfile" = "Dockerfile" ]; then \
337391
echo "Creating default variant ($$variant_name) manifest"; \
338-
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)); \
392+
refs=""; \
393+
for arch in $(DOCKER_ARCHS); do \
394+
if $(call dockerfile_arch_is_excluded,$$arch); then \
395+
echo " Skipping $$arch for default variant (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
396+
continue; \
397+
fi; \
398+
if $(call registry_arch_is_excluded,$$arch); then \
399+
echo " Skipping $$arch for default variant on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
400+
continue; \
401+
fi; \
402+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)"; \
403+
done; \
404+
if [ -z "$$refs" ]; then \
405+
echo "Skipping default variant manifest (no supported architectures)"; \
406+
continue; \
407+
fi; \
408+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $$refs; \
339409
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)"; \
340410
fi; \
341411
if [ "$(DOCKER_IMAGE_TAG)" = "latest" ]; then \
342412
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
343413
echo "Creating manifest for $$variant_name variant version tag"; \
344-
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name); \
414+
refs=""; \
415+
for arch in $(DOCKER_ARCHS); do \
416+
if $(call dockerfile_arch_is_excluded,$$arch); then \
417+
echo " Skipping $$arch for $$variant_name version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
418+
continue; \
419+
fi; \
420+
if $(call registry_arch_is_excluded,$$arch); then \
421+
echo " Skipping $$arch for $$variant_name version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
422+
continue; \
423+
fi; \
424+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \
425+
done; \
426+
if [ -z "$$refs" ]; then \
427+
echo "Skipping version-tag manifest for $$variant_name variant (no supported architectures)"; \
428+
continue; \
429+
fi; \
430+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name" $$refs; \
345431
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \
346432
fi; \
347433
if [ "$$dockerfile" = "Dockerfile" ]; then \
348434
echo "Creating default variant version tag manifest"; \
349-
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):v$(DOCKER_MAJOR_VERSION_TAG)); \
435+
refs=""; \
436+
for arch in $(DOCKER_ARCHS); do \
437+
if $(call dockerfile_arch_is_excluded,$$arch); then \
438+
echo " Skipping $$arch for default variant version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
439+
continue; \
440+
fi; \
441+
if $(call registry_arch_is_excluded,$$arch); then \
442+
echo " Skipping $$arch for default variant version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
443+
continue; \
444+
fi; \
445+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)"; \
446+
done; \
447+
if [ -z "$$refs" ]; then \
448+
echo "Skipping default variant version-tag manifest (no supported architectures)"; \
449+
continue; \
450+
fi; \
451+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)" $$refs; \
350452
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)"; \
351453
fi; \
352454
fi; \

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/prometheus/common
22

3-
go 1.24.0
3+
go 1.25.0
44

55
require (
66
github.com/alecthomas/kingpin/v2 v2.4.0

0 commit comments

Comments
 (0)