Logan.Li 26341c3e8a feat: 去 mock 化 —— 全模块接入真实数据 (参考 jianmu/opsx-jenkins/aiops)
后端(35+ 新路由):
- AES-256-GCM 字段加密(enc:v1:),密钥自动生成 data/encryption.key
- 新模型:Host/K8sCluster/Credential/BuildNode/DeployTool/WebhookEndpoint/
  JenkinsServer/SystemSetting;Pipeline 扩展触发器/变量/缓存列,
  PipelineRun 扩展 buildNumber/externalUrl
- 资源 CRUD + 真实测试端点:主机/集群/构建节点 TCP 拨号、
  工具真实执行版本检测(保守安装策略)、Webhook HMAC-SHA256 签名发送、
  入站流水线触发 /api/hooks/pipeline/:id
- Jenkins 完整集成(移植 opsx-jenkins 生产客户端):crumb/BasicAuth/
  buildWithParameters/Location 队列/progressiveText 增量控制台,
  服务器 CRUD+测试、Job 树拉取(folder 压平)、导入为流水线、
  jenkins 类型流水线真实执行回传日志
- 流水线列表附带 lastRun、运行重试、summary 统计、系统设置单行表
- 运行结束触发出站 Webhook 通知;GitOps 同步状态真实推进

前端(14 页全部去 mock):
- 流水线列表/发布记录/批量发布/环境/凭证/构建节点/工具/Webhook/
  系统设置/Jenkins 导入/GitOps(资源树+差异) 全部接入真实 API
- 编辑器 4 Tab 持久化(基本信息/触发设置含真实 Webhook URL/变量缓存/发布历史)
- TopBar 真实流水线切换 + 仅保存/保存并运行
- Sidebar 徽标真实统计;删除未使用组件与 mock 数据文件
2026-10-27 03:15:20 +08:00

FlowStack 发布系统

参考阿里云云效 / 华为云 CodeArts 风格的画布式发布系统。 架构:Go gin 后端 + React 19 前端,前端产物嵌入 Go 单二进制,一个端口同时服务 API 与页面。

快速开始

./run.sh            # 一键构建并启动,访问 http://localhost:9527
./run.sh stop       # 停止
./run.sh dev        # 开发模式(gin :9527 + Vite :5173 热更新)
./run.sh help       # 全部命令

首次启动自动创建 SQLite 数据库(data/flowstack.db)并写入两条示例流水线 (aiops-backend K8s 场景 / aiops-web 主机部署场景),零配置开箱即用。

初始管理员账号

首次启动自动生成 随机初始密码 的管理员账号(用户名 admin),并在日志中打印、写入 data/initial-admin-password.txt(权限 0600)。

查看初始密码:

# 方式一:从启动日志中查看(与 opsxloki 的 docker logs 用法一致)
grep -A6 "已生成管理员账号" logs/flowstack.log

# 方式二:直接查看密码文件(与 opsxloki 的 docker exec 用法一致)
cat data/initial-admin-password.txt

Docker 容器化部署时对应命令(参考 opsxloki 模式):

docker logs <容器名> | grep -A6 "已生成管理员账号"
docker exec <容器名> cat /app/data/initial-admin-password.txt

登录校验接口:POST /api/auth/login(body: {"username": "admin", "password": "..."})。 密码使用 argon2id 哈希存储,请登录后立即修改。

功能模块

模块 说明 数据来源
流水线 列表 + 画布编辑器(Tekton 任务库、拖拽编排、连线、节点属性配置) gin API(SQLite 持久化)
模拟执行 触发运行后节点状态实时推进(pending→running→success)+ SSE 日志流 gin API + 模拟执行引擎
GitOps 部署 ArgoCD 风格应用列表 / 资源树 / Diff gin API(部分模拟)
插件市场 已安装 / 可安装 / 启停 / 卸载 gin API(SQLite 持久化)
发布记录 运行历史、阶段、日志、Pod 详情 前端演示数据(待接入)
批量发布 / 环境 / 凭证 / 构建节点 / Jenkins 导入 / Webhook / 系统设置 UI 演示 前端演示数据(待接入)

架构

FlowStack/
├── run.sh                  # 启动脚本(单二进制模式)
├── backend/                # Go gin
│   ├── main.go             # 路由 + 静态托管(go:embed)
│   └── internal/
│       ├── model/          # GORM 模型(流水线/节点/连线/运行/日志/GitOps/插件)
│       ├── database/       # SQLite 初始化 + seed
│       └── handler/        # REST API + SSE 日志推送 + 模拟执行引擎
├── frontend/               # React 19 + Vite + Tailwind + shadcn/ui + React Flow
│   └── src/
│       ├── lib/api.ts      # REST 客户端
│       ├── components/flow/# 画布编辑器(PipelineFlowEditor / TektonNode)
│       └── pages/          # 14 个功能页面
└── data/                   # SQLite 数据库(运行时生成)

REST API 摘要

GET/POST        /api/pipelines              流水线列表 / 创建
GET/PUT/DELETE  /api/pipelines/:id          详情(含节点连线)/ 更新 / 删除
PUT             /api/pipelines/:id/nodes    保存画布节点(全量覆盖)
PUT             /api/pipelines/:id/edges    保存画布连线
POST            /api/pipelines/:id/runs     触发运行(模拟执行引擎)
GET             /api/runs                   运行列表
GET             /api/runs/:runId            运行详情(阶段+日志)
GET             /api/runs/:runId/logs/stream  SSE 实时日志
GET             /api/gitops/apps            GitOps 应用列表
GET/POST        /api/gitops/argo/*          ArgoCD 模拟接口
GET/POST/DELETE /api/plugins*               插件管理
GET             /health                     健康检查

技术栈

  • 后端:Go 1.24+ / gin / GORM / SQLite(glebarez 纯 Go 驱动)
  • 前端:React 19 / TypeScript / Vite 7 / Tailwind CSS / shadcn-ui / @xyflow/react (React Flow) / TanStack Query / lucide-react / sonner
S
Description
No description provided
Readme
595 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 76.5%
Go 21%
CSS 1.1%
Shell 0.9%
JavaScript 0.4%
Other 0.1%