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