Skip to content

Commit 20f4ce8

Browse files
committed
chore(packaging): master tagging
Contrary to what has been done before, this reverts to something close to the old behavior: If a git tag is built, the name of the tag is used as the docker tag. If the master branch is built, it is tagged as master-SHA, master and latest If a regular branch is built, it is not pushed.
1 parent c82710f commit 20f4ce8

File tree

2 files changed

+26
-37
lines changed

2 files changed

+26
-37
lines changed

Makefile

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ BUILD_IMAGE_VERSION := 0.2.1
2020

2121
# Docker image info
2222
IMAGE_PREFIX ?= grafana
23-
IMAGE_TAG := $(shell ./tools/image-tag)
23+
24+
IMAGE_TAG := $(shell git describe --exact-match 2> /dev/null || git rev-parse --abbrev-ref HEAD)
2425

2526
# Version info for binaries
2627
GIT_REVISION := $(shell git rev-parse --short HEAD)
@@ -79,9 +80,11 @@ BUILD_IMAGE = BUILD_IMAGE=$(IMAGE_PREFIX)/loki-build-image:$(BUILD_IMAGE_VERSION
7980
ifeq ($(CI), true)
8081
BUILD_OCI=img build --no-console $(OCI_PLATFORMS) --build-arg $(BUILD_IMAGE)
8182
PUSH_OCI=img push
83+
TAG_OCI=img tag
8284
else
8385
BUILD_OCI=docker build --build-arg $(BUILD_IMAGE)
84-
PUSH_OCI=img push
86+
PUSH_OCI=docker push
87+
TAG_OCI=docker tag
8588
endif
8689

8790
binfmt:
@@ -315,36 +318,20 @@ images: promtail-image loki-image loki-canary-image docker-driver
315318

316319
IMAGE_NAMES := grafana/loki grafana/promtail grafana/loki-canary
317320

318-
save-images:
319-
@set -e; \
320-
mkdir -p images; \
321-
for image_name in $(IMAGE_NAMES); do \
322-
echo ">> saving image $$image_name:$(IMAGE_TAG)"; \
323-
docker save $$image_name:$(IMAGE_TAG) -o images/$$(echo $$image_name | tr "/" _):$(IMAGE_TAG); \
324-
done
325-
326-
load-images:
327-
@set -e; \
328-
mkdir -p images; \
329-
for image_name in $(IMAGE_NAMES); do \
330-
docker load -i images/$$(echo $$image_name | tr "/" _):$(IMAGE_TAG); \
331-
done
332-
333-
push-images:
334-
@set -e; \
335-
for image_name in $(IMAGE_NAMES); do \
336-
docker push $$image_name:$(IMAGE_TAG); \
337-
done
338-
339-
push-latest:
340-
@set -e; \
341-
for image_name in $(IMAGE_NAMES); do \
342-
docker tag $$image_name:$(IMAGE_TAG) $$image_name:latest; \
343-
docker tag $$image_name:$(IMAGE_TAG) $$image_name:master; \
344-
docker push $$image_name:latest; \
345-
docker push $$image_name:master; \
346-
done
347-
321+
# push(app, optional tag)
322+
# pushes the app, optionally tagging it differently before
323+
define push
324+
$(SUDO) $(TAG_OCI) $(IMAGE_PREFIX)/$(1):$(IMAGE_TAG) $(IMAGE_PREFIX)/$(1):$(if $(2),$(2),$(IMAGE_TAG))
325+
$(SUDO) $(PUSH_OCI) $(IMAGE_PREFIX)/$(1):$(if $(2),$(2),$(IMAGE_TAG))
326+
endef
327+
328+
# push-image(app)
329+
# pushes the app, if branch==master also as :latest and :master
330+
define push-image
331+
$(call push,$(1))
332+
$(if $(filter $(GIT_BRANCH),master), $(call push,promtail,master))
333+
$(if $(filter $(GIT_BRANCH),master), $(call push,promtail,latest))
334+
endef
348335

349336
# promtail
350337
promtail-image:
@@ -355,7 +342,7 @@ promtail-debug-image:
355342
$(SUDO) $(BUILD_OCI) -t $(IMAGE_PREFIX)/promtail:$(IMAGE_TAG)-debug -f cmd/promtail/Dockerfile.debug .
356343

357344
promtail-push: promtail-image
358-
$(SUDO) $(PUSH_OCI) $(IMAGE_PREFIX)/promtail:$(IMAGE_TAG)
345+
$(call push-image,promtail)
359346

360347
# loki
361348
loki-image:
@@ -366,7 +353,7 @@ loki-debug-image:
366353
$(SUDO) $(BUILD_OCI) -t $(IMAGE_PREFIX)/loki:$(IMAGE_TAG)-debug -f cmd/loki/Dockerfile.debug .
367354

368355
loki-push: loki-image
369-
$(SUDO) $(PUSH_OCI) $(IMAGE_PREFIX)/loki:$(IMAGE_TAG)
356+
$(call push-image,loki)
370357

371358
# loki-canary
372359
loki-canary-image:

tools/image-tag

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ set -o errexit
44
set -o nounset
55
set -o pipefail
66

7-
WORKING_SUFFIX=$(if git status --porcelain | grep -qE '^(?:[^?][^ ]|[^ ][^?])\s'; then echo "-WIP"; else echo ""; fi)
8-
BRANCH_PREFIX=$(git rev-parse --abbrev-ref HEAD)
9-
echo "${BRANCH_PREFIX//\//-}-$(git rev-parse --short HEAD)$WORKING_SUFFIX"
7+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
8+
SHA=$(git rev-parse --short HEAD)
9+
10+
# If this is a tag, use it, otherwise branch-hash
11+
git describe --exact-match 2> /dev/null || echo "${BRANCH}-${SHA}"

0 commit comments

Comments
 (0)