6.5 KiB
6.5 KiB
自动化运维与发布设计说明
更新: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 |
执行链路
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 接入流程:
- 在流水线页面点击
Jenkins,填写 Jenkins 地址、用户、API Token 或密码。 - 后端使用
crumbIssuer/api/json自动获取 CSRF crumb。 - 通过
/api/json递归扫描 Folder/Job,按 Job URL 去重。 - 同步到
deploy_pipelines,设置ci_provider=jenkins、jenkins_job_name、jenkins_job_url。 - 用户触发 Jenkins 类型流水线时,AIOps 按全局引用策略展示分支、Tag 或二者,并调用
build或buildWithParameters。 - 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。
安全与审批
高风险场景:
- 批量主机执行。
- 生产环境发布。
- 删除文件、重启服务、修改配置。
- kubectl apply/delete/scale。
- 非工作时间变更。
建议策略:
- 执行前展示计划、目标和命令摘要。
- 生产环境强制审批。
- 执行输出写入审计。
- 支持失败重试和回滚说明。
- AI Agent 生成脚本只能保存草稿,用户确认后执行。
与 AI Agent 联动
| 场景 | 建议 |
|---|---|
| AI 排障成功 | 一键沉淀为脚本库草稿 |
| Pipeline 失败 | AI 读取日志并解释失败原因 |
| 定时任务失败 | AI 分析最近输出和目标状态 |
| 远程执行输出过长 | AI 调用 analyze_output 总结 |
验收清单
- 脚本能保存、执行、查看输出。
- 定时任务能启停、立即执行、记录历史。
- 远程执行能选择资产和凭证,输出完整。
- Pipeline 日志实时推送,刷新后可回看。
- 发布审批状态正确流转。
- Workspace 文件和终端不能路径逃逸。
- 高危操作能进入审批或确认流程。