Files
chorus-dev-images/Makefile
anthonyrawlins 90249aad89
Some checks failed
Build and Push Development Images / build-base (push) Has been cancelled
Build and Push Development Images / build-rust (push) Has been cancelled
Build and Push Development Images / build-go (push) Has been cancelled
Build and Push Development Images / build-python (push) Has been cancelled
Build and Push Development Images / build-node (push) Has been cancelled
Build and Push Development Images / build-java (push) Has been cancelled
Build and Push Development Images / build-cpp (push) Has been cancelled
Build and Push Development Images / test-images (base) (push) Has been cancelled
Build and Push Development Images / test-images (cpp-dev) (push) Has been cancelled
Build and Push Development Images / test-images (go-dev) (push) Has been cancelled
Build and Push Development Images / test-images (java-dev) (push) Has been cancelled
Build and Push Development Images / test-images (node-dev) (push) Has been cancelled
Build and Push Development Images / test-images (python-dev) (push) Has been cancelled
Build and Push Development Images / test-images (rust-dev) (push) Has been cancelled
Initial release of CHORUS Development Images
This commit establishes the foundation for language-specific development
container images used by CHORUS autonomous agents.

Features:
- Multi-stage Dockerfile with 7 layered images
- Base Debian Bookworm image with common tools
- Language-specific images: Rust, Go, Python, Node.js, Java, C/C++
- Standardized /workspace/{input,data,output} structure
- Automated CI/CD pipeline for weekly security updates
- Comprehensive test suite for all images
- Full documentation (README, USAGE, MAINTENANCE)

Images available:
- chorus/base:1.0.0 (~200MB)
- chorus/rust-dev:1.0.0 (~1.2GB)
- chorus/go-dev:1.0.0 (~600MB)
- chorus/python-dev:1.0.0 (~800MB)
- chorus/node-dev:1.0.0 (~700MB)
- chorus/java-dev:1.0.0 (~1.5GB)
- chorus/cpp-dev:1.0.0 (~900MB)

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 11:09:36 +10:00

191 lines
7.0 KiB
Makefile

# 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)"