chore: 统一本地服务器与远程仓库源码

- 合并 main 与 master 历史并以服务器结构为基线
- 保留迁移、数据保留、AWS 账单与部署安全能力
- 建立 SDD 规格和 CI 验证闭环
This commit is contained in:
Logan.Li committed 2026-08-05 20:03:25 +08:00
commit fd60361d93
460 files changed
+37492 -23871

No files matched your search

+37
View File
@@ -25,6 +25,7 @@
| 远程执行 | 已完成 | SSH 执行、上传、结果查看 |
| Agent 任务 | 已完成 | Agent 轮询 command/script |
| Pipeline | 已完成 | 流水线定义、阶段、执行日志 |
| Jenkins 接入 | 已完成 | 保存 Jenkins API Token/密码、扫描 Jobs、同步为外部流水线、触发构建并回填日志 |
| 发布管理 | 已完成 | 发布单、环境、审批、详情 |
| Workspace 文件 | 已完成 | 构建目录文件浏览 |
| Workspace 终端 | 已完成 | xterm 进入构建目录 |
@@ -42,6 +43,7 @@
| 远程执行 | `remote_exec.go` | `RemoteExecPage.tsx` |
| Agent 任务 | `agent_task.go` | Agent 监控相关页面 |
| Pipeline | `pipeline*.go` | `PipelineManager.tsx`、`PipelineEditor.tsx` |
| Jenkins 接入 | `pipeline_jenkins.go` | `JenkinsSettingsDialog.tsx`、`PipelineCard.tsx` |
| 发布 | `pipeline_release.go`、`deploy*.go` | `ReleaseManager.tsx`、`AppRelease.tsx` |
| Workspace | `workspace_files.go` | `FileBrowserDialog.tsx`、`WorkspaceTermDialog.tsx` |
| 审批 | `approval*.go` | `ApprovalFlow.tsx` |
@@ -68,6 +70,41 @@ Backend
---
## Pipeline 双模式
AIOps 流水线支持两种执行模式,默认仍为平台原生执行,Jenkins 作为外部 CI Provider 接入:
| 模式 | `ci_provider` | 适用场景 | 执行方式 |
|------|---------------|----------|----------|
| AIOps 原生 | `aiops` | 新项目、希望统一在平台内完成构建/发布/日志/Workspace | AIOps 调度构建节点,本地执行 stages,并写入 `deploy_pipeline_runs` |
| Jenkins | `jenkins` | 企业已有 Jenkins Job,需要平滑纳管和统一审计 | AIOps 保存 Job 映射,调用 Jenkins API 触发构建,轮询状态与 console log |
Jenkins 接入流程:
1. 在流水线页面点击 `Jenkins`,填写 Jenkins 地址、用户、API Token 或密码。
2. 后端使用 `crumbIssuer/api/json` 自动获取 CSRF crumb。
3. 通过 `/api/json` 递归扫描 Folder/Job,按 Job URL 去重。
4. 同步到 `deploy_pipelines`,设置 `ci_provider=jenkins`、`jenkins_job_name`、`jenkins_job_url`。
5. 用户触发 Jenkins 类型流水线时,AIOps 按全局引用策略展示分支、Tag 或二者,并调用 `build` 或 `buildWithParameters`。
6. Jenkins 返回队列地址后,AIOps 轮询 queue/build API,并通过 `logText/progressiveText` 增量读取 console log,按行写入 `deploy_pipeline_runs`。
触发参数约定:
- Jenkins 全局配置提供 `ref_mode` 和 `ref_param`。`ref_mode=branch` 只展示分支,`tag` 只展示 Tag,`both` 允许用户二选一。// Logan.Li
- AIOps 不修改 Jenkins Job 配置,Job 的 Git 参数、Choice 参数、Shell 构建步骤仍以 Jenkins 为准;同步时只读保存参数定义、Git URL 和 Shell 摘要。// Logan.Li
- 用户触发 Jenkins Job 时,前端按 Jenkins 实际参数定义渲染表单;GitParameter 会优先通过同步到的 Git URL 只读拉取分支或 Tag 候选。
- 用户选择 Tag 或 Branch 时,写入 Jenkins Job 实际参数名;若 Job 未返回参数名,则回退到全局 `ref_param`,默认参数名为 `SELECT`。
- 前端/接口传入 `variables` 时,会作为 Jenkins build parameters 一并发送。
- Jenkins 未启用或 Token 不可用时,只影响 Jenkins 类型流水线,不影响 AIOps 原生流水线。
安全约定:
- Jenkins Token/密码只加密落库,不通过 GET 接口回显。
- 列表只展示 `token_set`,前端留空保存时保留旧密钥。
- Job 同步只保存 Job 元信息,不保存 Jenkins 构建参数里的敏感值。
---
## 日志与输出
| 类型 | 存储/通道 | 说明 |