a8ed935f6a
and template Implements the finalize stage infrastructure for HoneyBiscuitWorkshop: - New finalize module with config, error, event, plugin, stage, and template submodules - Plugin system supporting internal (webhook, mail, satori, in-site) and external plugins - FinalizeConfig schema with version validation for finalize.yml - Add glob, duration-str, lettre dependencies to workshop-baker - Expand project documentation (clarification.md, description.md) - Update .gitignore and fix bake.rs pipeline_functions access BREAKING CHANGE: Not a buildable version!
63 lines
3.6 KiB
Markdown
63 lines
3.6 KiB
Markdown
# HBW(HoneyBiscuitWorkshop) 项目规划与介绍
|
||
|
||
本项目为一个基于Rust的CI/CD系统,名为“蜜饼工坊”(HoneyBiscuitWorkshop)。
|
||
该名称取材于明日方舟世界观中小刻爱吃的蜜饼和她的管理者火神大姐的工坊。
|
||
|
||
## 目标愿景
|
||
|
||
这个CI/CD的最终用途如下:
|
||
0. 首先是一个合格的CI/CD。其参考了concourse(concourse也是本项目的起始点与初衷,见Vol3/Story.md),意图实现其大部分功能。
|
||
1. 软件包自动化
|
||
接入AOSC的autobuild+abbs树,或者Arch Linux的ABS,实现软件包的自动构建与更新
|
||
在Web/CLI(./workshop)中允许使用流水线模板快捷推送任务。示例:
|
||
./workshop push aosc:linux-kernel-6.19
|
||
./workshop push arch:python-pytorch-rocm
|
||
2. 机器学习支持,支持CUDA/ROCm/Others方案运行机器学习/深度学习/大模型训练程序
|
||
3. 对于部分工业软件/行业软件的支持,例如允许通过Vivado实现硬件设计远程综合,或者通过Blender渲染一个项目
|
||
一定程度是2的延伸
|
||
|
||
## 特性设计
|
||
|
||
1. LLM Skill/MCP 适配
|
||
允许通过Skill调用API/CLI(prefer!)与服务器通信,实现流水线自愈,流水线配置快速生成等
|
||
2. 流水线进度感知
|
||
具体说来程序可以通过读取的流水线日志来判断进行的进度,以估计剩余时间,或给出超时警告
|
||
实现上尽可能避开大模型,使用纯粹机器学习/深度学习方法,TTR=1s,单流水线持久化数据不大于16KB
|
||
3. 与koishi(Koishi.js,一个聊天机器人管理项目,https://koishi.chat/zh-CN/)等结合,实现消息推送与流水线简单管理(如快捷重启,定时启动等)
|
||
4. 基于cgroups/JobObject(计划中)的任务资源管理与计数
|
||
资源管理可以对任务资源进行限制
|
||
资源计数可以对不同权限的账号计算配额
|
||
5. prebake.yml, bake.sh, finalize.yml的最简流水线配置
|
||
prebake.yml的模板于本目录给出,尽可能完善
|
||
prebake为纯粹声明式配置,具有固定的用户自定义锚点,具有权限配置
|
||
bake.sh的模板于本目录给出,仅供参考
|
||
bake使用@decorator(私有)装饰器语法增强语义,主要是命令式,兼容纯shell
|
||
finalize.yml的模板正在设计,计划上支持shell/rhai/dylib(待Rust ABI稳定)
|
||
6. 静态二进制发布,支持各种架构,系统与C库
|
||
我们尽可能为Rust Tier1架构做完整支持(Windows暂缓)
|
||
会尤其注重新兴架构: RISC-V和LoongArch的支持
|
||
理论上不支持32位,但不会限制
|
||
!!!不支持没有操作系统的裸机(nostd)!!!
|
||
7. 构建机支持裸机,容器,FireCracker虚拟机与自定义环境
|
||
8. 可配置的构建缓存与环境缓存
|
||
9. 本地流水线快捷验证
|
||
可以在不借助服务器的情况下快速验证流水线语法的正确性,在借助本机容器/虚拟机的情况下进行试构建
|
||
10. 本地文件夹推送构建
|
||
可以推送本地的任何一个文件夹到服务器,其会根据.workshop中的规则文件/LLM自生成进行构建,支持基于哈希+分块的增量传输
|
||
11. Vol1/2/3 用户/管理员/开发者文档
|
||
CI/CD采用Web+CLI+Server+Multi (Agent+Baker.bin(Bakerd+Baker))设计。
|
||
12. 最小化外部依赖
|
||
可能且推荐的外部扩展包括:
|
||
- RustyVault/Vault: 凭据存储
|
||
- Koishi: IM集成与通知
|
||
- Repology: 跨发行版包名映射
|
||
可能的外部扩展包括:
|
||
- SQL DB
|
||
- NoSQL DB
|
||
- MQ
|
||
13. 分发
|
||
事实上单二进制是与有系统依赖相对的。分发时,server/agent/baker需要动态下载。
|
||
除去官方分发(软件包或者统一软件包(如flatpak))外,通过curl+sh下载验证并安装server。
|
||
server自动下载并验证正确的agent与baker,agent/baker可缓存。
|
||
提供agent.tar与baker.tar便于离线部署
|