Files
FlowStack/README.md
T
Logan.Li 04d1342b27 feat: FlowStack 发布系统首个可运行版本 (gin + React)
- Go gin 后端:流水线/节点/连线/运行/日志/GitOps/插件 REST API,
  SQLite(GORM) 自动建表 + seed,模拟执行引擎 + SSE 实时日志推送,
  前端产物 go:embed 嵌入单二进制,一个端口同时服务 API 与页面
- React 19 前端:画布式流水线编辑器(React Flow + Tekton 任务库)、
  GitOps 部署、批量发布、发布记录等 14 个模块页面,
  tRPC 全部替换为 REST(TanStack Query)
- 首次启动生成随机密码管理员账号(日志 + data/initial-admin-password.txt)
- run.sh 一键构建启动(默认端口 9527,支持 start/stop/restart/build/dev)
2026-10-27 02:44:10 +08:00

93 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FlowStack 发布系统
参考阿里云云效 / 华为云 CodeArts 风格的画布式发布系统。
架构:**Go gin 后端 + React 19 前端**,前端产物嵌入 Go 单二进制,一个端口同时服务 API 与页面。
## 快速开始
```bash
./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)。
查看初始密码:
```bash
# 方式一:从启动日志中查看(与 opsxloki 的 docker logs 用法一致)
grep -A6 "已生成管理员账号" logs/flowstack.log
# 方式二:直接查看密码文件(与 opsxloki 的 docker exec 用法一致)
cat data/initial-admin-password.txt
```
Docker 容器化部署时对应命令(参考 opsxloki 模式):
```bash
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