8fd807f174
crate BREAKING CHANGE: Moved engine/ module (cgroups, executor, pm, upm, types) and shared types (command, repology, time) from workshop-baker to new workshop-engine crate. All internal error types consolidated into workshop-engine::error. Import paths changed throughout codebase.
109 lines
3.9 KiB
Markdown
109 lines
3.9 KiB
Markdown
# PROJECT KNOWLEDGE BASE
|
|
|
|
**Generated:** 2026-04-22
|
|
**Commit:** 7b3b71a
|
|
**Branch:** master
|
|
|
|
## OVERVIEW
|
|
HoneyBiscuitWorkshop is a Rust-based CI/CD system ("蜜饼工坊") with LLM-powered pipeline auto-configuration. 9 independent Cargo crates, no workspace.
|
|
|
|
## STRUCTURE
|
|
```
|
|
./
|
|
├── workshop-baker/ # Main orchestrator (CLI + daemon)
|
|
├── workshop-agent/ # HTTP agent server
|
|
├── workshop-pipeline/ # Config library (prebake/finalize)
|
|
├── workshop-llm-detector/ # LLM repo analyzer
|
|
├── workshop-vault/ # Secret management client
|
|
├── workshop-cert/ # TLS certificate generator
|
|
├── workshop-deviceid/ # Device ID library
|
|
├── workshop-builder-native/ # Stub (unused)
|
|
├── workshop-helper-mac/ # MAC address utility
|
|
├── docs/ # mdBook documentation (zh-CN)
|
|
├── playground/ # Experimentation
|
|
└── third_party/ # Empty
|
|
```
|
|
|
|
## WHERE TO LOOK
|
|
| Task | Location | Notes |
|
|
|------|----------|-------|
|
|
| Baker (main) | `workshop-baker/src/{bake,prebake,engine}/` | Core pipeline logic |
|
|
| Agent server | `workshop-agent/src/` | Actix-web HTTP + TLS |
|
|
| Pipeline config | `workshop-pipeline/src/config/` | prebake/finalize YAML |
|
|
| LLM integration | `workshop-llm-detector/src/llm/` | Ollama/OpenAI clients |
|
|
| Secrets | `workshop-vault/src/` | Vault client wrapper |
|
|
|
|
## CODE MAP
|
|
| Symbol | Type | Location | Role |
|
|
|--------|------|----------|------|
|
|
| PipelineConfig | struct | workshop-pipeline/src/lib.rs:27 | Full pipeline config |
|
|
| CICDLLMHelper | struct | workshop-llm-detector/src/lib.rs:16 | LLM analysis entry |
|
|
| Engine | struct | workshop-baker/src/engine.rs | Build executor |
|
|
| VaultClient | struct | workshop-vault/src/client.rs | Secret ops |
|
|
|
|
## CONVENTIONS
|
|
|
|
### Rust
|
|
- **Edition**: 2024 (non-standard, requires Rust 1.85+)
|
|
- Deprecate `mod.rs`
|
|
- **Naming**: `snake_case` files/modules, `PascalCase` types, `SCREAMING_SNAKE_CASE` consts
|
|
- **Error handling**: `thiserror` + `anyhow` combo
|
|
- **Async**: `#[tokio::main]` + `tokio` with "full" features
|
|
- **Imports**: `std` → `external_crate` → `crate::module`
|
|
|
|
### Testing
|
|
- **Rust**: `#[test]` inline, `#[tokio::test]` async, `tests/*.rs` integration
|
|
- **Python**: `pytest` with `tests/integration/test_*.py` (Docker-based)
|
|
- **Benchmarks**: Criterion with `harness = false`
|
|
|
|
### Build Pipeline
|
|
- **prebake.yml**: Environment setup (docker/firecracker/baremetal)
|
|
- **bake.sh**: Build execution with `# @pipeline` decorators
|
|
- **finalize.yml**: Packaging, deployment, notifications
|
|
- **Annotations**: `@timeout()`, `@retry()`, `@parallel`, `@fallible`
|
|
|
|
## ANTI-PATTERNS (THIS PROJECT)
|
|
|
|
1. **Python in Rust project** — workshop-baker has Python tests (pytest.ini, test_prebake.py)
|
|
2. **temp/ directory** — Non-standard in Rust projects
|
|
3. **Certificates in source** — artifact workshop-cert/certs/ not excluded
|
|
4. **Deprecated projects** — workshop-executor.old, workshop-monitor.old still present
|
|
5. **Hardcoded mirrors** — Tsinghua University mirrors in configs
|
|
6. **Rust 2024 edition** — May not work with stable toolchains
|
|
|
|
## UNIQUE STYLES
|
|
|
|
- **Pipeline DSL**: Shell scripts with `# @decorator` annotations
|
|
- **Dual-mode baker**: CLI commands + daemon mode
|
|
- **LLM cookbook system**: YAML cookbooks for language-specific builds
|
|
- **Chinese docs** — Documentation primarily in zh-CN
|
|
- **User "vulcan"** — Custom build user (not root/runner)
|
|
|
|
## COMMANDS
|
|
```bash
|
|
# Build
|
|
cargo build --release -p workshop-baker
|
|
|
|
# Test
|
|
cargo test -p workshop-baker
|
|
pytest tests/integration/test_prebake.py -v
|
|
|
|
# Lint
|
|
cargo clippy -- -D warnings
|
|
cargo fmt --all
|
|
|
|
# Run baker
|
|
cargo run --bin workshop-baker -- prebake config.yml
|
|
cargo run --bin workshop-baker -- bake script.sh
|
|
|
|
# Run agent
|
|
cargo run --bin workshop-agent
|
|
```
|
|
|
|
## NOTES
|
|
|
|
- **Docker required** for integration tests
|
|
- **workshop-builder-native** is a stub (3-line Hello World)
|
|
- No root workspace Cargo.toml — each crate is independent
|
|
- `AGENTS.md.old` at root — legacy documentation
|