# 自动化运维与发布设计说明 > 更新: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. 高危操作能进入审批或确认流程。