Skip to content

🚀 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 控制覆盖范围。

📚 相关文档 ​

🌟 愿你所想,皆你所愿。