Initial release of CHORUS Development Images
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
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
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>
This commit is contained in:
35
tests/test-base.sh
Normal file
35
tests/test-base.sh
Normal file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
# Test script for base image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE="${REGISTRY:-registry.home.deepblack.cloud/chorus}/base:latest"
|
||||
|
||||
echo "🧪 Testing base image: $IMAGE"
|
||||
|
||||
# Test workspace structure
|
||||
echo " ✓ Checking workspace directories..."
|
||||
docker run --rm "$IMAGE" test -d /workspace/input || exit 1
|
||||
docker run --rm "$IMAGE" test -d /workspace/data || exit 1
|
||||
docker run --rm "$IMAGE" test -d /workspace/output || exit 1
|
||||
|
||||
# Test core utilities
|
||||
echo " ✓ Checking core utilities..."
|
||||
docker run --rm "$IMAGE" git --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" curl --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which vim > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which jq > /dev/null || exit 1
|
||||
|
||||
# Test user permissions
|
||||
echo " ✓ Checking user permissions..."
|
||||
docker run --rm "$IMAGE" whoami | grep -q chorus || exit 1
|
||||
docker run --rm "$IMAGE" sh -c 'echo "test" > /workspace/data/test.txt && rm /workspace/data/test.txt' || exit 1
|
||||
|
||||
# Test environment variables
|
||||
echo " ✓ Checking environment variables..."
|
||||
docker run --rm "$IMAGE" sh -c 'test -n "$WORKSPACE_ROOT"' || exit 1
|
||||
docker run --rm "$IMAGE" sh -c 'test -n "$WORKSPACE_INPUT"' || exit 1
|
||||
docker run --rm "$IMAGE" sh -c 'test -n "$WORKSPACE_DATA"' || exit 1
|
||||
docker run --rm "$IMAGE" sh -c 'test -n "$WORKSPACE_OUTPUT"' || exit 1
|
||||
|
||||
echo "✅ Base image tests passed"
|
||||
30
tests/test-cpp-dev.sh
Normal file
30
tests/test-cpp-dev.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
# Test script for C/C++ development image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE="${REGISTRY:-registry.home.deepblack.cloud/chorus}/cpp-dev:latest"
|
||||
|
||||
echo "🧪 Testing C/C++ image: $IMAGE"
|
||||
|
||||
# Test C/C++ toolchain
|
||||
echo " ✓ Checking C/C++ toolchain..."
|
||||
docker run --rm "$IMAGE" gcc --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" g++ --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" clang --version > /dev/null || exit 1
|
||||
|
||||
# Test build systems
|
||||
echo " ✓ Checking build tools..."
|
||||
docker run --rm "$IMAGE" cmake --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" ninja --version > /dev/null || exit 1
|
||||
|
||||
# Test compilation capability
|
||||
echo " ✓ Testing C++ compilation..."
|
||||
docker run --rm "$IMAGE" bash -c '
|
||||
cd /tmp && \
|
||||
echo "#include <iostream>\nint main() { std::cout << \"hello\" << std::endl; return 0; }" > test.cpp && \
|
||||
g++ -o test test.cpp && \
|
||||
./test
|
||||
' || exit 1
|
||||
|
||||
echo "✅ C/C++ image tests passed"
|
||||
31
tests/test-go-dev.sh
Normal file
31
tests/test-go-dev.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
# Test script for Go development image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE="${REGISTRY:-registry.home.deepblack.cloud/chorus}/go-dev:latest"
|
||||
|
||||
echo "🧪 Testing Go image: $IMAGE"
|
||||
|
||||
# Test Go toolchain
|
||||
echo " ✓ Checking Go toolchain..."
|
||||
docker run --rm "$IMAGE" go version > /dev/null || exit 1
|
||||
|
||||
# Test development tools
|
||||
echo " ✓ Checking Go tools..."
|
||||
docker run --rm "$IMAGE" which gopls > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which dlv > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which staticcheck > /dev/null || exit 1
|
||||
|
||||
# Test build capability
|
||||
echo " ✓ Testing Go build..."
|
||||
docker run --rm "$IMAGE" bash -c '
|
||||
cd /tmp && \
|
||||
mkdir test-project && cd test-project && \
|
||||
echo "package main\nimport \"fmt\"\nfunc main() { fmt.Println(\"hello\") }" > main.go && \
|
||||
go mod init test && \
|
||||
go build && \
|
||||
./test
|
||||
' || exit 1
|
||||
|
||||
echo "✅ Go image tests passed"
|
||||
26
tests/test-java-dev.sh
Normal file
26
tests/test-java-dev.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# Test script for Java development image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE="${REGISTRY:-registry.home.deepblack.cloud/chorus}/java-dev:latest"
|
||||
|
||||
echo "🧪 Testing Java image: $IMAGE"
|
||||
|
||||
# Test Java toolchain
|
||||
echo " ✓ Checking Java toolchain..."
|
||||
docker run --rm "$IMAGE" java -version 2>&1 | grep -q "openjdk" || exit 1
|
||||
docker run --rm "$IMAGE" javac -version > /dev/null 2>&1 || exit 1
|
||||
docker run --rm "$IMAGE" mvn --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" gradle --version > /dev/null || exit 1
|
||||
|
||||
# Test build capability
|
||||
echo " ✓ Testing Java compilation..."
|
||||
docker run --rm "$IMAGE" bash -c '
|
||||
cd /tmp && \
|
||||
echo "public class HelloWorld { public static void main(String[] args) { System.out.println(\"hello\"); }}" > HelloWorld.java && \
|
||||
javac HelloWorld.java && \
|
||||
java HelloWorld
|
||||
' || exit 1
|
||||
|
||||
echo "✅ Java image tests passed"
|
||||
36
tests/test-node-dev.sh
Normal file
36
tests/test-node-dev.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# Test script for Node.js development image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE="${REGISTRY:-registry.home.deepblack.cloud/chorus}/node-dev:latest"
|
||||
|
||||
echo "🧪 Testing Node.js image: $IMAGE"
|
||||
|
||||
# Test Node.js toolchain
|
||||
echo " ✓ Checking Node.js toolchain..."
|
||||
docker run --rm "$IMAGE" node --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" npm --version > /dev/null || exit 1
|
||||
|
||||
# Test development tools
|
||||
echo " ✓ Checking Node.js tools..."
|
||||
docker run --rm "$IMAGE" which pnpm > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which yarn > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which tsc > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which eslint > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which prettier > /dev/null || exit 1
|
||||
|
||||
# Test execution capability
|
||||
echo " ✓ Testing Node.js execution..."
|
||||
docker run --rm "$IMAGE" node -e "console.log('hello')" || exit 1
|
||||
|
||||
# Test package installation
|
||||
echo " ✓ Testing npm install..."
|
||||
docker run --rm "$IMAGE" bash -c '
|
||||
cd /tmp && \
|
||||
npm init -y --quiet && \
|
||||
npm install lodash --silent && \
|
||||
node -e "const _ = require(\"lodash\"); console.log(_.VERSION)"
|
||||
' || exit 1
|
||||
|
||||
echo "✅ Node.js image tests passed"
|
||||
36
tests/test-python-dev.sh
Normal file
36
tests/test-python-dev.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# Test script for Python development image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE="${REGISTRY:-registry.home.deepblack.cloud/chorus}/python-dev:latest"
|
||||
|
||||
echo "🧪 Testing Python image: $IMAGE"
|
||||
|
||||
# Test Python toolchain
|
||||
echo " ✓ Checking Python toolchain..."
|
||||
docker run --rm "$IMAGE" python3 --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" pip3 --version > /dev/null || exit 1
|
||||
|
||||
# Test development tools
|
||||
echo " ✓ Checking Python tools..."
|
||||
docker run --rm "$IMAGE" which uv > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which ruff > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which black > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which pytest > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which mypy > /dev/null || exit 1
|
||||
|
||||
# Test execution capability
|
||||
echo " ✓ Testing Python execution..."
|
||||
docker run --rm "$IMAGE" python3 -c "print('hello')" || exit 1
|
||||
|
||||
# Test package installation
|
||||
echo " ✓ Testing pip install..."
|
||||
docker run --rm "$IMAGE" bash -c '
|
||||
cd /tmp && \
|
||||
echo "requests" > requirements.txt && \
|
||||
pip3 install --user -r requirements.txt --quiet && \
|
||||
python3 -c "import requests; print(requests.__version__)"
|
||||
' || exit 1
|
||||
|
||||
echo "✅ Python image tests passed"
|
||||
32
tests/test-rust-dev.sh
Normal file
32
tests/test-rust-dev.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
# Test script for Rust development image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE="${REGISTRY:-registry.home.deepblack.cloud/chorus}/rust-dev:latest"
|
||||
|
||||
echo "🧪 Testing Rust image: $IMAGE"
|
||||
|
||||
# Test Rust toolchain
|
||||
echo " ✓ Checking Rust toolchain..."
|
||||
docker run --rm "$IMAGE" rustc --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" cargo --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" rustfmt --version > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" cargo clippy --version > /dev/null || exit 1
|
||||
|
||||
# Test development tools
|
||||
echo " ✓ Checking Rust tools..."
|
||||
docker run --rm "$IMAGE" which ripgrep > /dev/null || exit 1
|
||||
docker run --rm "$IMAGE" which fd > /dev/null || exit 1
|
||||
|
||||
# Test build capability
|
||||
echo " ✓ Testing Rust build..."
|
||||
docker run --rm "$IMAGE" bash -c '
|
||||
cd /tmp && \
|
||||
cargo init --name test-project --quiet && \
|
||||
cd test-project && \
|
||||
cargo build --release --quiet && \
|
||||
./target/release/test-project
|
||||
' || exit 1
|
||||
|
||||
echo "✅ Rust image tests passed"
|
||||
Reference in New Issue
Block a user