# CHORUS Development Images Build System # ======================================== .PHONY: help build-all build-base build-rust build-go build-python build-node build-java build-cpp \ test-all test-base test-rust test-go test-python test-node test-java test-cpp \ push-all clean version REGISTRY ?= registry.home.deepblack.cloud IMAGE_PREFIX := chorus VERSION := $(shell cat VERSION) # Colors for output BLUE := \033[0;34m GREEN := \033[0;32m YELLOW := \033[0;33m NC := \033[0m # No Color help: @echo "$(BLUE)CHORUS Development Images Build System$(NC)" @echo "" @echo "$(GREEN)Build Targets:$(NC)" @echo " build-all Build all images (base + 6 language images)" @echo " build-base Build base image only" @echo " build-rust Build Rust development image" @echo " build-go Build Go development image" @echo " build-python Build Python development image" @echo " build-node Build Node.js development image" @echo " build-java Build Java development image" @echo " build-cpp Build C/C++ development image" @echo "" @echo "$(GREEN)Test Targets:$(NC)" @echo " test-all Test all images" @echo " test-base Test base image" @echo " test-rust Test Rust image" @echo " test-go Test Go image" @echo " test-python Test Python image" @echo " test-node Test Node.js image" @echo " test-java Test Java image" @echo " test-cpp Test C/C++ image" @echo "" @echo "$(GREEN)Registry Targets:$(NC)" @echo " push-all Push all images to registry" @echo " clean Remove local images" @echo "" @echo "$(YELLOW)Configuration:$(NC)" @echo " Registry: $(REGISTRY)" @echo " Image prefix: $(IMAGE_PREFIX)" @echo " Version: $(VERSION)" build-all: build-base build-rust build-go build-python build-node build-java build-cpp @echo "$(GREEN)✅ All images built successfully$(NC)" build-base: @echo "$(BLUE)Building base image...$(NC)" docker build \ --target base \ -t $(REGISTRY)/$(IMAGE_PREFIX)/base:latest \ -t $(REGISTRY)/$(IMAGE_PREFIX)/base:$(VERSION) \ -f images/base/Dockerfile \ images/base @echo "$(GREEN)✅ Base image built$(NC)" build-rust: build-base @echo "$(BLUE)Building Rust development image...$(NC)" docker build \ --target rust-dev \ -t $(REGISTRY)/$(IMAGE_PREFIX)/rust-dev:latest \ -t $(REGISTRY)/$(IMAGE_PREFIX)/rust-dev:$(VERSION) \ -f images/base/Dockerfile \ images/base @echo "$(GREEN)✅ Rust image built$(NC)" build-go: build-base @echo "$(BLUE)Building Go development image...$(NC)" docker build \ --target go-dev \ -t $(REGISTRY)/$(IMAGE_PREFIX)/go-dev:latest \ -t $(REGISTRY)/$(IMAGE_PREFIX)/go-dev:$(VERSION) \ -f images/base/Dockerfile \ images/base @echo "$(GREEN)✅ Go image built$(NC)" build-python: build-base @echo "$(BLUE)Building Python development image...$(NC)" docker build \ --target python-dev \ -t $(REGISTRY)/$(IMAGE_PREFIX)/python-dev:latest \ -t $(REGISTRY)/$(IMAGE_PREFIX)/python-dev:$(VERSION) \ -f images/base/Dockerfile \ images/base @echo "$(GREEN)✅ Python image built$(NC)" build-node: build-base @echo "$(BLUE)Building Node.js development image...$(NC)" docker build \ --target node-dev \ -t $(REGISTRY)/$(IMAGE_PREFIX)/node-dev:latest \ -t $(REGISTRY)/$(IMAGE_PREFIX)/node-dev:$(VERSION) \ -f images/base/Dockerfile \ images/base @echo "$(GREEN)✅ Node.js image built$(NC)" build-java: build-base @echo "$(BLUE)Building Java development image...$(NC)" docker build \ --target java-dev \ -t $(REGISTRY)/$(IMAGE_PREFIX)/java-dev:latest \ -t $(REGISTRY)/$(IMAGE_PREFIX)/java-dev:$(VERSION) \ -f images/base/Dockerfile \ images/base @echo "$(GREEN)✅ Java image built$(NC)" build-cpp: build-base @echo "$(BLUE)Building C/C++ development image...$(NC)" docker build \ --target cpp-dev \ -t $(REGISTRY)/$(IMAGE_PREFIX)/cpp-dev:latest \ -t $(REGISTRY)/$(IMAGE_PREFIX)/cpp-dev:$(VERSION) \ -f images/base/Dockerfile \ images/base @echo "$(GREEN)✅ C/C++ image built$(NC)" test-all: test-base test-rust test-go test-python test-node test-java test-cpp @echo "$(GREEN)✅ All tests passed$(NC)" test-base: @chmod +x tests/test-base.sh @REGISTRY=$(REGISTRY)/$(IMAGE_PREFIX) bash tests/test-base.sh test-rust: @chmod +x tests/test-rust-dev.sh @REGISTRY=$(REGISTRY)/$(IMAGE_PREFIX) bash tests/test-rust-dev.sh test-go: @chmod +x tests/test-go-dev.sh @REGISTRY=$(REGISTRY)/$(IMAGE_PREFIX) bash tests/test-go-dev.sh test-python: @chmod +x tests/test-python-dev.sh @REGISTRY=$(REGISTRY)/$(IMAGE_PREFIX) bash tests/test-python-dev.sh test-node: @chmod +x tests/test-node-dev.sh @REGISTRY=$(REGISTRY)/$(IMAGE_PREFIX) bash tests/test-node-dev.sh test-java: @chmod +x tests/test-java-dev.sh @REGISTRY=$(REGISTRY)/$(IMAGE_PREFIX) bash tests/test-java-dev.sh test-cpp: @chmod +x tests/test-cpp-dev.sh @REGISTRY=$(REGISTRY)/$(IMAGE_PREFIX) bash tests/test-cpp-dev.sh push-all: build-all test-all @echo "$(BLUE)Pushing all images to registry...$(NC)" docker push $(REGISTRY)/$(IMAGE_PREFIX)/base:latest docker push $(REGISTRY)/$(IMAGE_PREFIX)/base:$(VERSION) docker push $(REGISTRY)/$(IMAGE_PREFIX)/rust-dev:latest docker push $(REGISTRY)/$(IMAGE_PREFIX)/rust-dev:$(VERSION) docker push $(REGISTRY)/$(IMAGE_PREFIX)/go-dev:latest docker push $(REGISTRY)/$(IMAGE_PREFIX)/go-dev:$(VERSION) docker push $(REGISTRY)/$(IMAGE_PREFIX)/python-dev:latest docker push $(REGISTRY)/$(IMAGE_PREFIX)/python-dev:$(VERSION) docker push $(REGISTRY)/$(IMAGE_PREFIX)/node-dev:latest docker push $(REGISTRY)/$(IMAGE_PREFIX)/node-dev:$(VERSION) docker push $(REGISTRY)/$(IMAGE_PREFIX)/java-dev:latest docker push $(REGISTRY)/$(IMAGE_PREFIX)/java-dev:$(VERSION) docker push $(REGISTRY)/$(IMAGE_PREFIX)/cpp-dev:latest docker push $(REGISTRY)/$(IMAGE_PREFIX)/cpp-dev:$(VERSION) @echo "$(GREEN)✅ All images pushed to registry$(NC)" clean: @echo "$(YELLOW)Removing local images...$(NC)" -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/base:latest 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/base:$(VERSION) 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/rust-dev:latest 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/rust-dev:$(VERSION) 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/go-dev:latest 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/go-dev:$(VERSION) 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/python-dev:latest 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/python-dev:$(VERSION) 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/node-dev:latest 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/node-dev:$(VERSION) 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/java-dev:latest 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/java-dev:$(VERSION) 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/cpp-dev:latest 2>/dev/null || true -docker rmi $(REGISTRY)/$(IMAGE_PREFIX)/cpp-dev:$(VERSION) 2>/dev/null || true @echo "$(GREEN)✅ Local images removed$(NC)" version: @echo "$(VERSION)"