Skip to content

Commit 6128805

Browse files
authored
Update common Prometheus files (#788)
Signed-off-by: prombot <prometheus-team@googlegroups.com>
1 parent e72bf7a commit 6128805

File tree

1 file changed

+106
-4
lines changed

1 file changed

+106
-4
lines changed

Makefile.common

Lines changed: 106 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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; \

0 commit comments

Comments
 (0)