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:
207
README.md
Normal file
207
README.md
Normal file
@@ -0,0 +1,207 @@
|
||||
# CHORUS Development Images
|
||||
|
||||
Official Docker images for CHORUS autonomous agent development environments.
|
||||
|
||||
[](https://gitea.chorus.services/tony/chorus-dev-images/actions)
|
||||
|
||||
## Overview
|
||||
|
||||
CHORUS Development Images provide standardized, pre-configured development environments for autonomous agents. Each image follows a consistent workspace structure and includes language-specific toolchains optimized for agent-driven software development.
|
||||
|
||||
## Available Images
|
||||
|
||||
| Image | Base | Approx Size | Key Tools |
|
||||
|-------|------|-------------|-----------|
|
||||
| `chorus/base` | Debian Bookworm | ~200MB | git, curl, build-essential, vim, jq |
|
||||
| `chorus/rust-dev` | base | ~1.2GB | rustc 1.77+, cargo, clippy, rustfmt, ripgrep |
|
||||
| `chorus/go-dev` | base | ~600MB | go1.22, gopls, delve, staticcheck, golangci-lint |
|
||||
| `chorus/python-dev` | base | ~800MB | python3.11, uv, ruff, black, pytest, mypy |
|
||||
| `chorus/node-dev` | base | ~700MB | node20, pnpm, yarn, typescript, eslint, prettier |
|
||||
| `chorus/java-dev` | base | ~1.5GB | openjdk-17, maven, gradle |
|
||||
| `chorus/cpp-dev` | base | ~900MB | gcc, g++, clang, cmake, ninja, gdb, valgrind |
|
||||
|
||||
**Total storage:** ~5GB for all images (with layer sharing)
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Pull an Image
|
||||
|
||||
```bash
|
||||
docker pull registry.home.deepblack.cloud/chorus/rust-dev:latest
|
||||
```
|
||||
|
||||
### Run Interactive Shell
|
||||
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
-v $(pwd):/workspace/input:ro \
|
||||
registry.home.deepblack.cloud/chorus/rust-dev:latest
|
||||
```
|
||||
|
||||
### Execute Specific Command
|
||||
|
||||
```bash
|
||||
docker run --rm \
|
||||
-v $(pwd):/workspace/input:ro \
|
||||
-v $(pwd)/output:/workspace/output \
|
||||
registry.home.deepblack.cloud/chorus/rust-dev:latest \
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
## Workspace Structure
|
||||
|
||||
All images use a standardized three-directory workspace layout:
|
||||
|
||||
```
|
||||
/workspace/
|
||||
├── input/ - Task requirements, repository checkout (typically read-only)
|
||||
├── data/ - Working directory for builds, compilation, temporary files
|
||||
└── output/ - Deliverables, artifacts, reports, patches
|
||||
```
|
||||
|
||||
**Environment Variables:**
|
||||
- `WORKSPACE_ROOT=/workspace`
|
||||
- `WORKSPACE_INPUT=/workspace/input`
|
||||
- `WORKSPACE_DATA=/workspace/data` (default working directory)
|
||||
- `WORKSPACE_OUTPUT=/workspace/output`
|
||||
|
||||
## Image Details
|
||||
|
||||
### Base Image (`chorus/base`)
|
||||
|
||||
Foundation for all language-specific images with:
|
||||
- Debian Bookworm (stable)
|
||||
- Essential development tools
|
||||
- Git with LFS support
|
||||
- Standardized workspace structure
|
||||
- Non-root `chorus` user (UID 1000)
|
||||
|
||||
### Rust Development (`chorus/rust-dev`)
|
||||
|
||||
- **Toolchain:** Stable Rust with rustup
|
||||
- **Components:** rustfmt, clippy, rust-analyzer
|
||||
- **Tools:** cargo-edit, cargo-audit, cargo-watch, ripgrep, fd-find
|
||||
- **Libraries:** libssl-dev, libpq-dev, libsqlite3-dev
|
||||
|
||||
### Go Development (`chorus/go-dev`)
|
||||
|
||||
- **Version:** Go 1.22.2
|
||||
- **Tools:** gopls (LSP), delve (debugger), staticcheck, golangci-lint
|
||||
- **Environment:** GOROOT, GOPATH pre-configured
|
||||
|
||||
### Python Development (`chorus/python-dev`)
|
||||
|
||||
- **Version:** Python 3.11
|
||||
- **Package Managers:** uv, pip-tools
|
||||
- **Linters:** ruff, black, pylint, mypy
|
||||
- **Testing:** pytest, pytest-cov, pytest-asyncio
|
||||
- **REPL:** ipython
|
||||
|
||||
### Node.js Development (`chorus/node-dev`)
|
||||
|
||||
- **Version:** Node 20 LTS
|
||||
- **Package Managers:** npm, pnpm, yarn
|
||||
- **TypeScript:** Full TypeScript support
|
||||
- **Tools:** eslint, prettier, nodemon, pm2
|
||||
|
||||
### Java Development (`chorus/java-dev`)
|
||||
|
||||
- **JDK:** OpenJDK 17
|
||||
- **Build Tools:** Maven, Gradle
|
||||
- **Pre-configured:** Maven local repository
|
||||
|
||||
### C/C++ Development (`chorus/cpp-dev`)
|
||||
|
||||
- **Compilers:** gcc, g++, clang
|
||||
- **Build Systems:** cmake, ninja, autotools
|
||||
- **Libraries:** boost
|
||||
- **Debug Tools:** gdb, valgrind
|
||||
- **Documentation:** doxygen
|
||||
|
||||
## Building Locally
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Docker 20.10+
|
||||
- GNU Make
|
||||
|
||||
### Build Commands
|
||||
|
||||
```bash
|
||||
# Build all images
|
||||
make build-all
|
||||
|
||||
# Build specific image
|
||||
make build-rust
|
||||
make build-go
|
||||
make build-python
|
||||
make build-node
|
||||
make build-java
|
||||
make build-cpp
|
||||
|
||||
# Run tests
|
||||
make test-all
|
||||
|
||||
# Push to registry (after building and testing)
|
||||
make push-all
|
||||
|
||||
# Clean local images
|
||||
make clean
|
||||
```
|
||||
|
||||
## Versioning
|
||||
|
||||
Images are tagged with:
|
||||
- **`latest`** - Most recent stable build
|
||||
- **`<version>`** - Semantic version (e.g., `1.0.0`)
|
||||
|
||||
### Version History
|
||||
|
||||
- **1.0.0** (2025-09-30) - Initial release
|
||||
- Base Debian Bookworm image
|
||||
- 6 language-specific development environments
|
||||
- Standardized workspace structure
|
||||
|
||||
## Automated Builds
|
||||
|
||||
Images automatically rebuild:
|
||||
- On changes to image source files (push to `main`)
|
||||
- Weekly security update schedule (Mondays 2 AM UTC)
|
||||
- Manual workflow dispatch
|
||||
|
||||
## Integration with CHORUS
|
||||
|
||||
The CHORUS execution engine automatically selects appropriate images based on task language:
|
||||
|
||||
```go
|
||||
// Example: CHORUS engine auto-selects image
|
||||
task := &TaskExecutionRequest{
|
||||
Description: "Fix Rust compilation error",
|
||||
}
|
||||
// Engine detects "Rust" and uses chorus/rust-dev:latest
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
### Adding a New Tool
|
||||
|
||||
1. Edit `images/base/Dockerfile`
|
||||
2. Add tool installation to appropriate image stage
|
||||
3. Update tests in `tests/test-<image>.sh`
|
||||
4. Update this README
|
||||
5. Submit pull request
|
||||
|
||||
### Reporting Issues
|
||||
|
||||
Please report issues at: https://gitea.chorus.services/tony/chorus-dev-images/issues
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2025 CHORUS Services. All rights reserved.
|
||||
|
||||
## Links
|
||||
|
||||
- **Source:** https://gitea.chorus.services/tony/chorus-dev-images
|
||||
- **Registry:** registry.home.deepblack.cloud/chorus
|
||||
- **Documentation:** [docs/](docs/)
|
||||
- **Main Project:** https://gitea.chorus.services/tony/CHORUS
|
||||
Reference in New Issue
Block a user