From 94df2c8d4f1cab5f06b0225e9c80df0e9fbcf38d Mon Sep 17 00:00:00 2001 From: Rene Luria Date: Fri, 28 Aug 2026 15:23:26 +0200 Subject: [PATCH] build: Tag Docker image with version on main, SHA otherwise Derive the Docker tag from the crate version when building on the main branch and fall back to the short commit SHA on any other branch. Update the run, clean, shell and push targets to use the same tag instead of the implicit latest tag. --- Makefile | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 3a38294..28e1809 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,16 @@ # Variables IMAGE_NAME = pop-imap-importer DOCKER_PLATFORM = linux/amd64 +VERSION = $(shell grep -m1 '^version' Cargo.toml | cut -d'"' -f2) +GIT_BRANCH = $(shell git rev-parse --abbrev-ref HEAD) +GIT_SHA = $(shell git rev-parse --short HEAD) + +# Docker tag: version number on main branch, short commit SHA otherwise +ifeq ($(GIT_BRANCH),main) +DOCKER_TAG = $(VERSION) +else +DOCKER_TAG = $(GIT_SHA) +endif # Default target .PHONY: help @@ -36,29 +46,29 @@ test: ## Run all tests # Docker targets .PHONY: build -build: ## Build the Docker image for linux/amd64 platform - docker build --platform=$(DOCKER_PLATFORM) -t $(IMAGE_NAME) . +build: ## Build the Docker image for linux/amd64 platform (tagged with version on main, commit SHA otherwise) + docker build --platform=$(DOCKER_PLATFORM) -t $(IMAGE_NAME):$(DOCKER_TAG) . .PHONY: run run: ## Run the Docker container - docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME) + docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME):$(DOCKER_TAG) .PHONY: run-with-env run-with-env: ## Run the Docker container with a custom .env file - docker run --platform=$(DOCKER_PLATFORM) --rm -it -v $(PWD)/.env:/app/.env $(IMAGE_NAME) + docker run --platform=$(DOCKER_PLATFORM) --rm -it -v $(PWD)/.env:/app/.env $(IMAGE_NAME):$(DOCKER_TAG) .PHONY: clean clean: ## Remove the Docker image - docker rmi $(IMAGE_NAME) + docker rmi $(IMAGE_NAME):$(DOCKER_TAG) .PHONY: push push: ## Push the Docker image to a registry (requires REPOSITORY variable) ifndef REPOSITORY $(error REPOSITORY is not set. Please set it with: make push REPOSITORY=your-repo/image-name) endif - docker tag $(IMAGE_NAME) $(REPOSITORY):latest - docker push $(REPOSITORY):latest + docker tag $(IMAGE_NAME):$(DOCKER_TAG) $(REPOSITORY):$(DOCKER_TAG) + docker push $(REPOSITORY):$(DOCKER_TAG) .PHONY: shell shell: ## Run a shell in the Docker container - docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME) sh \ No newline at end of file + docker run --platform=$(DOCKER_PLATFORM) --rm -it $(IMAGE_NAME):$(DOCKER_TAG) sh \ No newline at end of file