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)
This commit is contained in:
William Valentin
2025-09-14 17:25:31 -07:00
parent 2d7bd53767
commit 00a71165ac

View File

@@ -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