Skip to content

Commit e593e39

Browse files
authored
Merge pull request #262 from prometheus/repo_sync
Synchronize common files from prometheus/prometheus
2 parents f32794c + 4a0149a commit e593e39

3 files changed

Lines changed: 117 additions & 11 deletions

File tree

.github/workflows/container_description.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks.
1919
steps:
2020
- name: git checkout
21-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
21+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2222
with:
2323
persist-credentials: false
2424
- name: Set docker hub repo name
@@ -42,7 +42,7 @@ jobs:
4242
if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks.
4343
steps:
4444
- name: git checkout
45-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
45+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4646
with:
4747
persist-credentials: false
4848
- name: Set quay.io org name

.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: 111 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ ifneq ($(shell command -v gotestsum 2> /dev/null),)
5555
endif
5656
endif
5757

58-
PROMU_VERSION ?= 0.17.0
58+
PROMU_VERSION ?= 0.18.1
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 :=
@@ -90,8 +90,10 @@ ifdef DOCKERFILE_PATH
9090
$(error DOCKERFILE_PATH is deprecated. Use DOCKERFILE_VARIANTS ?= $(DOCKERFILE_PATH) in the Makefile)
9191
endif
9292

93-
DOCKER_ARCHS ?= amd64
94-
DOCKERFILE_VARIANTS ?= Dockerfile $(wildcard Dockerfile.*)
93+
DOCKER_ARCHS ?= amd64 armv7 arm64 ppc64le riscv64 s390x
94+
DOCKERFILE_ARCH_EXCLUSIONS ?=
95+
DOCKER_REGISTRY_ARCH_EXCLUSIONS ?= quay.io:riscv64
96+
DOCKERFILE_VARIANTS ?= $(wildcard Dockerfile Dockerfile.*)
9597

9698
# Function to extract variant from Dockerfile label.
9799
# Returns the variant name from io.prometheus.image.variant label, or "default" if not found.
@@ -109,6 +111,24 @@ endif
109111
# Build variant:dockerfile pairs for shell iteration.
110112
DOCKERFILE_VARIANTS_WITH_NAMES := $(foreach df,$(DOCKERFILE_VARIANTS),$(call dockerfile_variant,$(df)):$(df))
111113

114+
# Shell helper to check whether a dockerfile/arch pair is excluded.
115+
define dockerfile_arch_is_excluded
116+
case " $(DOCKERFILE_ARCH_EXCLUSIONS) " in \
117+
*" $$dockerfile:$(1) "*) true ;; \
118+
*) false ;; \
119+
esac
120+
endef
121+
122+
# Shell helper to check whether a registry/arch pair is excluded.
123+
# Extracts registry from DOCKER_REPO (e.g., quay.io/prometheus -> quay.io)
124+
define registry_arch_is_excluded
125+
registry=$$(echo "$(DOCKER_REPO)" | cut -d'/' -f1); \
126+
case " $(DOCKER_REGISTRY_ARCH_EXCLUSIONS) " in \
127+
*" $$registry:$(1) "*) true ;; \
128+
*) false ;; \
129+
esac
130+
endef
131+
112132
BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS))
113133
PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS))
114134
TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS))
@@ -250,6 +270,10 @@ $(BUILD_DOCKER_ARCHS): common-docker-%:
250270
@for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \
251271
dockerfile=$${variant#*:}; \
252272
variant_name=$${variant%%:*}; \
273+
if $(call dockerfile_arch_is_excluded,$*); then \
274+
echo "Skipping $$variant_name variant for linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
275+
continue; \
276+
fi; \
253277
distroless_arch="$*"; \
254278
if [ "$*" = "armv7" ]; then \
255279
distroless_arch="arm"; \
@@ -284,6 +308,14 @@ $(PUBLISH_DOCKER_ARCHS): common-docker-publish-%:
284308
@for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \
285309
dockerfile=$${variant#*:}; \
286310
variant_name=$${variant%%:*}; \
311+
if $(call dockerfile_arch_is_excluded,$*); then \
312+
echo "Skipping push for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
313+
continue; \
314+
fi; \
315+
if $(call registry_arch_is_excluded,$*); then \
316+
echo "Skipping push for $$variant_name variant on linux-$* to $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
317+
continue; \
318+
fi; \
287319
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
288320
echo "Pushing $$variant_name variant for linux-$*"; \
289321
docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \
@@ -311,6 +343,14 @@ $(TAG_DOCKER_ARCHS): common-docker-tag-latest-%:
311343
@for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \
312344
dockerfile=$${variant#*:}; \
313345
variant_name=$${variant%%:*}; \
346+
if $(call dockerfile_arch_is_excluded,$*); then \
347+
echo "Skipping tag for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
348+
continue; \
349+
fi; \
350+
if $(call registry_arch_is_excluded,$*); then \
351+
echo "Skipping tag for $$variant_name variant on linux-$* for $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
352+
continue; \
353+
fi; \
314354
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
315355
echo "Tagging $$variant_name variant for linux-$* as latest"; \
316356
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 +370,87 @@ common-docker-manifest:
330370
variant_name=$${variant%%:*}; \
331371
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
332372
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); \
373+
refs=""; \
374+
for arch in $(DOCKER_ARCHS); do \
375+
if $(call dockerfile_arch_is_excluded,$$arch); then \
376+
echo " Skipping $$arch for $$variant_name (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
377+
continue; \
378+
fi; \
379+
if $(call registry_arch_is_excluded,$$arch); then \
380+
echo " Skipping $$arch for $$variant_name on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
381+
continue; \
382+
fi; \
383+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \
384+
done; \
385+
if [ -z "$$refs" ]; then \
386+
echo "Skipping manifest for $$variant_name variant (no supported architectures)"; \
387+
continue; \
388+
fi; \
389+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" $$refs; \
334390
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \
335391
fi; \
336392
if [ "$$dockerfile" = "Dockerfile" ]; then \
337393
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)); \
394+
refs=""; \
395+
for arch in $(DOCKER_ARCHS); do \
396+
if $(call dockerfile_arch_is_excluded,$$arch); then \
397+
echo " Skipping $$arch for default variant (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
398+
continue; \
399+
fi; \
400+
if $(call registry_arch_is_excluded,$$arch); then \
401+
echo " Skipping $$arch for default variant on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
402+
continue; \
403+
fi; \
404+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)"; \
405+
done; \
406+
if [ -z "$$refs" ]; then \
407+
echo "Skipping default variant manifest (no supported architectures)"; \
408+
continue; \
409+
fi; \
410+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $$refs; \
339411
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)"; \
340412
fi; \
341413
if [ "$(DOCKER_IMAGE_TAG)" = "latest" ]; then \
342414
if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \
343415
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); \
416+
refs=""; \
417+
for arch in $(DOCKER_ARCHS); do \
418+
if $(call dockerfile_arch_is_excluded,$$arch); then \
419+
echo " Skipping $$arch for $$variant_name version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
420+
continue; \
421+
fi; \
422+
if $(call registry_arch_is_excluded,$$arch); then \
423+
echo " Skipping $$arch for $$variant_name version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
424+
continue; \
425+
fi; \
426+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \
427+
done; \
428+
if [ -z "$$refs" ]; then \
429+
echo "Skipping version-tag manifest for $$variant_name variant (no supported architectures)"; \
430+
continue; \
431+
fi; \
432+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name" $$refs; \
345433
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \
346434
fi; \
347435
if [ "$$dockerfile" = "Dockerfile" ]; then \
348436
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)); \
437+
refs=""; \
438+
for arch in $(DOCKER_ARCHS); do \
439+
if $(call dockerfile_arch_is_excluded,$$arch); then \
440+
echo " Skipping $$arch for default variant version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \
441+
continue; \
442+
fi; \
443+
if $(call registry_arch_is_excluded,$$arch); then \
444+
echo " Skipping $$arch for default variant version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \
445+
continue; \
446+
fi; \
447+
refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)"; \
448+
done; \
449+
if [ -z "$$refs" ]; then \
450+
echo "Skipping default variant version-tag manifest (no supported architectures)"; \
451+
continue; \
452+
fi; \
453+
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)" $$refs; \
350454
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)"; \
351455
fi; \
352456
fi; \

0 commit comments

Comments
 (0)