Files
aiops/docs/automation-deploy/README.md
T
Logan.Li fd60361d93 chore: 统一本地服务器与远程仓库源码
- 合并 main 与 master 历史并以服务器结构为基线
- 保留迁移、数据保留、AWS 账单与部署安全能力
- 建立 SDD 规格和 CI 验证闭环
2026-08-05 20:03:25 +08:00

162 lines
6.5 KiB
Markdown
Raw 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.
# 自动化运维与发布设计说明
> 更新:2026-07-05
> 范围:脚本库、定时任务、远程执行、Agent 任务、流水线、发布管理、Workspace 终端、审批联动。// Logan.Li
---
## 定位
自动化运维与发布模块负责把人工操作固化为可追踪、可复用、可审批的执行流程。它与堡垒机、资产凭证、AI Agent 关系紧密:
- 堡垒机保障访问和审计。
- 资产凭证提供执行目标。
- 自动化沉淀操作流程。
- AI Agent 可把成功排障过程转成脚本或 Runbook。
---
## 能力矩阵
| 能力 | 当前状态 | 说明 |
|------|----------|------|
| 脚本库 | 已完成 | 脚本 CRUD、查看、执行记录 |
| 定时任务 | 已完成 | Cron 表达式、启停、立即执行 |
| 远程执行 | 已完成 | SSH 执行、上传、结果查看 |
| Agent 任务 | 已完成 | Agent 轮询 command/script |
| Pipeline | 已完成 | 流水线定义、阶段、执行日志 |
| Jenkins 接入 | 已完成 | 保存 Jenkins API Token/密码、扫描 Jobs、同步为外部流水线、触发构建并回填日志 |
| 发布管理 | 已完成 | 发布单、环境、审批、详情 |
| Workspace 文件 | 已完成 | 构建目录文件浏览 |
| Workspace 终端 | 已完成 | xterm 进入构建目录 |
| 工具配置 | 已完成 | kubectl、maven、node、helm 等工具 |
---
## 主要代码落点
| 模块 | 后端 | 前端 |
|------|------|------|
| 脚本库 | `automation_script.go` | `ScriptManager.tsx` |
| 定时任务 | `automation_cron.go` | `CronJobManager.tsx` |
| 自动化总入口 | `automation.go` | `frontend/src/components/task/` |
| 远程执行 | `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` |
---
## 执行链路
```text
User
├── choose script / task / pipeline / release
├── select target assets or environment
├── confirm / approval if needed
└── execute
│
▼
Backend
├── resolve credential and target
├── run SSH / local tool / pipeline step / Agent task
├── stream logs
├── save execution record
└── write audit
```
---
## 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 构建参数里的敏感值。
---
## 日志与输出
| 类型 | 存储/通道 | 说明 |
|------|-----------|------|
| 脚本执行输出 | 任务执行记录 | 可展开查看 |
| 定时任务输出 | 执行历史 | 保留最近执行 |
| Pipeline 日志 | Redis pub/sub + DB 回查 | 实时推送和历史查看 |
| Workspace 终端 | xterm / PTY | 见终端体系 |
| Agent 任务结果 | `agent_tasks` | command/script 回传 |
缓存策略见 [platform/redis-caching-strategy](../platform/redis-caching-strategy.md)。
---
## 安全与审批
高风险场景:
- 批量主机执行。
- 生产环境发布。
- 删除文件、重启服务、修改配置。
- kubectl apply/delete/scale。
- 非工作时间变更。
建议策略:
1. 执行前展示计划、目标和命令摘要。
2. 生产环境强制审批。
3. 执行输出写入审计。
4. 支持失败重试和回滚说明。
5. AI Agent 生成脚本只能保存草稿,用户确认后执行。
---
## 与 AI Agent 联动
| 场景 | 建议 |
|------|------|
| AI 排障成功 | 一键沉淀为脚本库草稿 |
| Pipeline 失败 | AI 读取日志并解释失败原因 |
| 定时任务失败 | AI 分析最近输出和目标状态 |
| 远程执行输出过长 | AI 调用 analyze_output 总结 |
---
## 验收清单
1. 脚本能保存、执行、查看输出。
2. 定时任务能启停、立即执行、记录历史。
3. 远程执行能选择资产和凭证,输出完整。
4. Pipeline 日志实时推送,刷新后可回看。
5. 发布审批状态正确流转。
6. Workspace 文件和终端不能路径逃逸。
7. 高危操作能进入审批或确认流程。