From 00a71165acf28a7952d3f0c8209b0e86f40ada09 Mon Sep 17 00:00:00 2001 From: William Valentin Date: Sun, 14 Sep 2025 17:25:31 -0700 Subject: [PATCH] feat: add container registry targets to Makefile - Add docker-tag, docker-push, docker-pull, docker-login targets - Add registry-build and registry-push convenience targets - Add docker-clean-registry for cleanup - Integrate with CONTAINER_REGISTRY_URL and CONTAINER_TAG environment variables - Support fallback to default Gitea registry URL when .env is missing - Update status target to show registry configuration - Add dual tagging (specific tag + latest) --- Makefile | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/Makefile b/Makefile index af83376..16e176e 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ .PHONY: help install install-dev clean test test-cov lint format type-check .PHONY: server cli demo docker-build docker-dev docker-prod docker-test +.PHONY: docker-push docker-pull docker-tag docker-login registry-build registry-push .PHONY: pre-commit setup-dev deps-update deps-check security-check .PHONY: build package publish docs release validate-config @@ -222,6 +223,60 @@ docker-build: ## Build Docker images docker-compose build $(call success,Docker images built) +# Container Registry targets +docker-tag: ## Tag Docker images with registry URL + $(call info,Tagging Docker images for registry...) + @if [ -f ".env" ]; then \ + . ./.env && \ + docker tag unitforge:latest $${CONTAINER_REGISTRY_URL}:$${CONTAINER_TAG} && \ + docker tag unitforge:latest $${CONTAINER_REGISTRY_URL}:latest; \ + else \ + echo -e "$(YELLOW)$(WARNING_SYMBOL)$(NC) .env file not found. Using default values."; \ + docker tag unitforge:latest http://gitea-http.taildb3494.ts.net/will/unitforge:latest; \ + fi + $(call success,Docker images tagged for registry) + +docker-push: docker-tag ## Push Docker images to registry + $(call info,Pushing Docker images to registry...) + @if [ -f ".env" ]; then \ + . ./.env && \ + docker push $${CONTAINER_REGISTRY_URL}:$${CONTAINER_TAG} && \ + docker push $${CONTAINER_REGISTRY_URL}:latest; \ + else \ + echo -e "$(YELLOW)$(WARNING_SYMBOL)$(NC) .env file not found. Using default values."; \ + docker push http://gitea-http.taildb3494.ts.net/will/unitforge:latest; \ + fi + $(call success,Docker images pushed to registry) + +docker-pull: ## Pull Docker images from registry + $(call info,Pulling Docker images from registry...) + @if [ -f ".env" ]; then \ + . ./.env && \ + docker pull $${CONTAINER_REGISTRY_URL}:$${CONTAINER_TAG}; \ + else \ + echo -e "$(YELLOW)$(WARNING_SYMBOL)$(NC) .env file not found. Using default values."; \ + docker pull http://gitea-http.taildb3494.ts.net/will/unitforge:latest; \ + fi + $(call success,Docker images pulled from registry) + +registry-build: docker-build docker-tag ## Build and tag images for registry + $(call success,Images built and tagged for registry) + +registry-push: registry-build docker-push ## Build, tag, and push images to registry + $(call success,Images built, tagged, and pushed to registry) + +docker-login: ## Login to container registry (interactive) + $(call info,Logging into container registry...) + @if [ -f ".env" ]; then \ + . ./.env && \ + echo "Logging into registry at: $${CONTAINER_REGISTRY_URL}"; \ + docker login $${CONTAINER_REGISTRY_URL}; \ + else \ + echo -e "$(YELLOW)$(WARNING_SYMBOL)$(NC) .env file not found. Using default values."; \ + docker login http://gitea-http.taildb3494.ts.net; \ + fi + $(call success,Logged into container registry) + docker-build-legacy: ## Build Docker images with legacy builder (networking issues workaround) $(call info,Building Docker images with legacy builder...) DOCKER_BUILDKIT=0 docker-compose build @@ -278,6 +333,17 @@ docker-clean-legacy: ## Clean Docker containers and images docker system prune -f $(call success,Docker cleanup complete) +docker-clean-registry: ## Remove locally cached registry images + $(call info,Cleaning registry images from local cache...) + @if [ -f ".env" ]; then \ + . ./.env && \ + docker rmi $${CONTAINER_REGISTRY_URL}:$${CONTAINER_TAG} 2>/dev/null || true && \ + docker rmi $${CONTAINER_REGISTRY_URL}:latest 2>/dev/null || true; \ + else \ + docker rmi http://gitea-http.taildb3494.ts.net/will/unitforge:latest 2>/dev/null || true; \ + fi + $(call success,Registry images cleaned from local cache) + # Package and release targets build: clean ## Build package $(call info,Building package...) @@ -367,6 +433,20 @@ status: ## Show project status else \ echo " ✗ uv package manager not found - REQUIRED"; \ fi + @if command -v docker >/dev/null 2>&1; then \ + echo " ✓ Docker available"; \ + else \ + echo " ✗ Docker not found"; \ + fi + @echo "" + @echo -e "$(YELLOW)Container Registry:$(NC)" + @if [ -f ".env" ]; then \ + . ./.env && \ + echo " ✓ Registry URL: $${CONTAINER_REGISTRY_URL}"; \ + echo " ✓ Container Tag: $${CONTAINER_TAG}"; \ + else \ + echo " ⚠ .env file not found - using defaults"; \ + fi @echo "" @echo -e "$(YELLOW)Project Files:$(NC)" @if [ -f "pyproject.toml" ]; then echo " ✓ pyproject.toml"; else echo " ✗ pyproject.toml"; fi