外观
🚀 WuEasy CICD 自动打包部署平台
产品简介
WuEasy CICD 自动打包部署平台是一套「管理端 + 执行端」分离的自动打包部署工具。你在 Web 控制台上配置项目,部署在构建机上的执行端完成 拉取代码 → 打包 → 上传 → 部署 → 启动 全流程,并通过任务队列、Webhook 自动触发、实时日志与通知把整个过程管起来。
一句话概括:配置集中在管理端,构建与部署分散在执行端,产物与日志汇聚回管理端。
✨ 核心优势
1. 🎯 管理集中、执行分散
- 管理端集中管控:配置管理、执行机纳管、任务编排下发、日志汇聚、通知与审计全部在管理端完成,数据唯一落库点为管理端 MySQL。
- 执行端自治取码:执行端启动时自动生成 Git 密钥对并只上报公钥,配置到 Git 平台即可免密拉取,不连接数据库、不持有数据权限。
- 计划在管理端合成:一次任务的执行细节(变量展开、资源引用解析、凭据解密)由管理端合成为不可变的 RunPlan 快照,执行端只按计划执行。
2. 📦 项目化配置
- 一个项目维护构建步骤、Git 取码、部署文件、任务变量、通知与 Webhook 等配置。
- 支持
java(Maven)、go、frontend(npm)、docker四类构建步骤,可串行组合。 - 配置支持复制、导入导出,并可另存为项目模板一键套用。
3. 📊 全链路可观测
- 执行机容量感知的排队调度,任务状态全程可追踪。
- 日志经 SSE 实时推送,支持断点续传。
- 任务成功/失败、等待人工确认、执行机离线等事件多渠道通知。
🏗️ 系统架构
平台由管理端、执行机、部署节点三端组成,共享同一个 protocol 包作为协议与模型来源,三端之间只通过 HTTP 交互。
| 角色 | 部署位置 | 定位 |
|---|---|---|
管理端 cicd_server | 一台可被浏览器与执行端访问的服务器 | 唯一的 Web 服务与控制台(前端已嵌入二进制),独占 MySQL;负责配置管理、权限、队列派发、Webhook 与通知 |
执行机 cicd_agent | 构建机(可多台) | 主动连接管理端(Token 鉴权 + 长轮询取指令),不连数据库;负责 Git 密钥自建、拉码、构建、上传与远程部署 |
部署节点 cicd_node | 目标服务器(可选) | 同样主动注册并长轮询取指令;部署时由它在本机落地产物(管理端中转),目标机无需开放 SSH |
| 控制台前端 | 已嵌入管理端二进制 | Vue3 + Element Plus 单页应用,覆盖项目、任务、资源、执行机、系统与审计 |
📚 功能特性
构建与部署
| 功能 | 说明 |
|---|---|
| 多类型构建步骤 | java(Maven)/ go / frontend(npm)/ docker,多步骤按序串行,产物统一汇入后续阶段 |
| 四阶段执行模型 | 固定为打包 build → 上传 upload → 部署 deploy → 启动 start,可按需只选部分阶段,支持失败后从指定阶段重试 |
| 多产物部署与备份 | 一次任务可上传多个文件或整个目录,逐条配置来源、远端目标、覆盖方式(replace/merge/clean)、权限与属主;覆盖前自动备份,失败可回滚 |
| 目标服务器双链路 | mode=ssh 由执行机 SSH 直连目标机;mode=node 由目标机上的部署节点经管理端中转在本机落地 |
| 镜像仓库 | 独立维护私有仓库凭据供 docker push / docker pull 鉴权,凭据渲染为临时 docker 配置目录 |
| 产物归档 | 构建主产物归档到管理端长期留存,支持本机磁盘与 S3 存储后端,可随时下载 |
触发与调度
| 功能 | 说明 |
|---|---|
| 任务队列 | 同一项目只允许一个任务执行中,其余入队;按「优先级 + 先入先出」自动继续,支持置顶 |
| Webhook 自动触发 | 支持 GitHub / GitLab / Gitee / Codeup / 通用平台,按事件、分支、Tag、路径与提交信息过滤,带防抖合并,投递留痕可重放 |
| 人工卡点 | 关键项目可开启「部署前人工确认」:上传完成、部署开始前暂停等待放行,超时自动失败 |
| 通知 | 钉钉 / 企业微信 / 飞书 / 邮件 / 通用 Webhook,通知内容按任务状态与渠道内置渲染 |
运维与安全
| 功能 | 说明 |
|---|---|
| 执行机与部署节点纳管 | 主动注册、心跳保活、标签、并发容量、环境探测(JDK/Go/Node/Docker/HBuilderX/Git)、Git 密钥轮换、工作目录清理 |
| 项目与项目分组 | 项目必须归属分组,分组可承载组级任务变量与数据权限授权 |
| 数据权限与审计 | admin / user 两种角色,数据权限做到项目组 / 项目两级(只读 / 可触发 / 可管理);写操作均记录审计日志 |
| 多实例集群 | 管理端可水平扩展,基于 MySQL 租约表选主,只有领导者执行任务派发与巡检,所有实例都对外提供 HTTP 服务 |
| 项目模板与内容模板 | 项目可另存为模板并导入导出;内容模板用于定义启停脚本等文件内容,部署时在目标机生成 |
🛠️ 技术架构
- 管理端:Go 实现,前端 Vue3 + Element Plus 单页应用(已嵌入二进制),MySQL 为唯一数据落库点。
- 执行端:Go 实现,独立部署于构建机 / 目标机,主动连接管理端,不连数据库。
- 协议层:三端共享
protocol包,统一协议与数据模型。
💡 最佳实践
1. 部署规划
- 管理端选择一台可被浏览器与所有执行端访问的服务器,MySQL 只需一套。
- 构建机与目标机分离:构建机装执行机,目标机按需装部署节点或直接开放 SSH。
2. 流水线配置
- 将构建与部署解耦,按需只选部分阶段,失败后从指定阶段重试。
- 覆盖类部署务必开启备份,配合
replace/merge/clean控制覆盖范围。