我们正在实现一个基于Rust的CI/CD系统,名为'蜜饼工坊'(HoneyBiscuitWorkshop),取材于明日方舟世界观中小刻爱吃的蜜饼和她的管理者火神大姐的工坊。 这个CI/CD的最终用途如下: 0. 一个合格的CICD当然可以DevOps 1. 软件包自动化,例如接入AOSC的autobuild+abbs树,或者Arch Linux的ABS,实现软件包的自动构建与更新 2. 机器学习支持,支持CUDA/ROCm/Others方案运行机器学习/深度学习程序 3. 对于部分工业软件/行业软件的支持,例如允许通过Vivado实现硬件设计远程综合 这个CI/CD的特色如下: 1. 基于LLM的流水线自配置 LLM可以读取关键文件/定义的文件/预设规则/上次生成的报错来生成流水线配置 2. 流水线进度感知 具体说来程序可以通过读取的流水线日志来判断进行的进度,以估计剩余时间,或给出超时警告 3. 与koishi(Koishi.js,一个聊天机器人管理项目,https://koishi.chat/zh-CN/)等结合,实现消息推送,流水线简单管理 通过koishijs与QQ机器人/Telegram机器人等配合,实现流水线成功/失败推送和快捷的重试等功能 4. 基于cgroups/JobObject的任务资源管理与计数 资源管理可以对任务资源进行限制,资源计数可以对不同权限的账号计算配额 5. prebake.yml, bake.sh, finalize.yml的最简流水线配置,声明式+命令式结合,采用@decorator进行装饰,以增强流水线行为 细节见下 6. 单二进制发布,支持各种架构,系统与C库 当然,程序不支持没有操作系统的裸机(nostd) 7. 构建机支持裸机,容器与FireCracker虚拟机 8. 可配置的构建缓存与环境缓存 9. 本地流水线快捷验证 可以在不借助服务器的情况下快速验证流水线语法的正确性,在借助本机容器的情况下进行试构建 10. 本地文件夹推送构建 11. Vol1/2/3 用户/管理员/开发者文档 可以推送本地的任何一个文件夹到服务器,其会根据预设规则/.workshop中的文件/LLM自生成进行构建,支持增量传输 CI/CD采用Web+Server+Multi (Agent+Executor)设计。当然也有可能的CLI客户端用于上述目的。 这个CI/CD可能会结合koishi, rustyvault(https://rustyvault.net,使用标准的Vault也可)等外部项目构建,当然我们希望减少对外部项目的依赖,尤其是数据库(如MySQL,意即,我们尽可能在SQLite解决问题)和消息队列(如RabbitMQ),但是不阻止部署者使用这些。 finalize.yml的语法尚在设计