AI 如何替代传统 DevOps。从应用发布到故障恢复的实操。
代码合并了,还得构建、部署,再检查上线后的功能。出了问题,要查日志和配置,决定继续修复还是先退回旧版本。
这些步骤可以自动化,但应用依赖怎样配置、发布失败从哪里查起,仍然需要有人处理。Agent 已经能理解项目代码,接上应用平台以后,也可以参与后面的部署和维护。
这次用开源 Rainbond 和 RainSkills 部署了一个带数据库的留言板,从开发环境发布到生产,更新 V2,再演练配置故障和恢复 V1。过程中碰到了工具入口缺失,也碰到了操作记录成功、运行实例却没切换的情况。每一步都通过页面和业务请求核对。
传统 DevOps 怎样完成一次发布
容器化 Web 项目常用 Git 管代码,由 CI 工具构建镜像,再通过部署系统把镜像运行起来。
提交代码后,GitHub Actions 或 Jenkins 执行测试、构建镜像并推送到仓库。部署系统读取目标环境的配置,运行指定版本,随后检查实例和业务接口。Jenkins 的 Jenkinsfile 可以跟随代码审查,流水线也可以等待人工审批。Jenkins Pipeline 文档
| 环节 | 常见做法 | 仍要核对什么 |
|---|---|---|
| 测试与构建 | 流水线执行测试、Dockerfile 或构建脚本 | 测试是否通过,产物对应哪次代码变更 |
| 环境部署 | 部署清单或 Helm 配置描述变量、端口和存储 | 目标环境是否正确,连接信息是否匹配 |
| 生产发布 | 选择版本,经过审批后部署 | 发布差异、运行版本和回退目标 |
| 上线验收 | 检查实例、探针和业务请求 | 页面与 API 是否真正可用 |
| 故障恢复 | 查询日志、事件及近期变更,修复或回退 | 原因是否成立,处理后业务是否恢复 |
多环境和回滚也有现成机制。GitHub Actions 可以按环境配置变量、密钥和部署保护规则;Kubernetes Deployment 可以查询更新状态,回退历史版本。环境与部署规则、Deployment 文档
开发者还要维护项目与发布流程之间的关系。开发和生产连接不同数据库,要分别配置;镜像构建成功,要确认运行实例确实切到了新版本。接口报错时,又得从构建日志、应用日志和集群事件中找到与这次变更有关的信息。
完善的流程可以覆盖这些工作。仍需人工反复查询和整理的部分,则可以交给 Agent 继续处理。
用 RainSkills 操作 Rainbond 上的应用
Rainbond 把 Web 和数据库等服务组织成应用、组件,管理它们的依赖、端口及持久化存储。构建记录、版本和运行状态也能在应用中查询。
RainSkills 让 Codex、Claude Code 等 Agent 使用这些能力。Agent 读取当前项目,根据绑定信息找到对应应用,再调用平台工具部署、查询或处理版本。RainSkills 使用说明
开发者可以直接描述要对应用做什么。Agent 查询平台状态后执行相应操作,人也能打开控制台,检查同一个组件的状态。
留言板由 Flask 提供页面和业务 API,PostgreSQL 保存留言。页面显示代码版本、环境名称和数据库连接状态,每次更新后都能直接核对。
Rainbond 中分别建立了“开发环境”和“生产环境”两个团队,各自运行应用,使用独立的数据库、存储和访问入口。生产团队同样用于本次演示,留言全部是测试数据。

从项目目录部署开发 V1
准备好 Rainbond 后,可以给 Agent 安装 RainSkills。
npx skills add goodrain/rainskills
本次使用 RainSkills 0.1.50。首次连接时,在浏览器完成授权,等待连接验证成功,再继续操作应用。
先让 Agent 分析组件、构建命令和运行需求,核对方案后再部署。
分析当前项目的 Web 和数据库依赖,部署到开发团队。执行前列出组件、端口和持久化目录,完成后验证页面及业务 API。
Web 源码以软件包上传,Rainbond 使用 Python 3.12 CNB 构建,由 Gunicorn 监听 8080 端口。数据库从应用市场模板安装,Web 显式依赖数据库组件,读取它提供的连接参数。
最初的数据库镜像拉取较慢,随后改用市场模板完成部署。模板安装仍然传输了镜像,并没有省去下载。模板名称标为 17.5,启动日志显示的 PostgreSQL 引擎却是 16.3,本次记录采用实际引擎版本。
构建完成后,要检查组件能否正常运行,再请求页面和实际 API。有状态组件还要检查持久化挂载,RainSkills 的交付验证流程也包含这些检查。交付验证规则
开发页面显示 V1、开发环境和数据库已连接。通过浏览器保存的留言,也能重新读出。

把验证过的版本交付到生产
开发环境验证通过后,为应用创建 V1 快照,将 1.0.0 发布到企业可见的本地组件库,再到生产团队安装。发布内容只选已经验证的 Web 和市场数据库,排除了最初未部署完成的数据库组件。
RainSkills 当前没有新建企业应用模板的工具入口,所以首次模板在 Rainbond 控制台创建。之后的 V1、V2 都发布到同一个“AI-DevOps-交付演示”模板。
生产端使用独立的数据库账号、数据和持久化存储,Web 的环境标签设为“生产环境”。新库初始为空,开发环境的测试留言没有复制进去。
组件库提供可安装的版本。安装到生产团队后,还要检查该环境的配置和运行结果,才能确认上线完成。Rainbond 官方模板交付流程也采用这条路径。应用模板交付
后续追查版本时,需要从运行实例找到组件库版本、构建镜像和源码包。两次发布都保留在同一个模板下,可在控制台查询。

更新 V2,只升级 Web 组件
V2 在页面增加留言总数,接口新增 total_count 字段,保留原来的留言读取和写入方式。
代码修改后通过了 8 项本地测试。先替换开发 Web 的软件包,验证新功能,再创建并发布 1.1.0/V2。生产更新前,另行保存生产应用的 V1 基线快照。
查看生产应用当前版本与 V2 的变更,核对生产配置和 V1 回退基线。确认后更新 Web,并验证原有接口、新功能及已有数据。
升级对比中还出现了数据库初始化配置的差异,因此只选择 Web 升级,保留生产数据库的连接信息和数据。
升级任务完成时,页面一度仍显示 V1。继续核对运行状态,完成 Web 的滚动更新后,浏览器才显示 V2。
页面上的计数为 3。两条原有生产记录都在,新增的 V2 验证记录也能读出。


改错数据库名,检查 AI 怎样排障
故障演练只改了一项配置。将生产专属数据库提供方连接信息中的 DB_NAME,从 devops_demo_prod 改成不存在的 devops_demo_prod_missing_fault,再更新 Web。数据库进程和原有数据保持不动。
页面仍能打开,数据库连接却显示异常,留言统计也不可用。

生产应用的业务 API 异常。检查组件状态、日志和近期配置变更,给出依据及处理建议,先不要修改资源。
日志报出目标数据库不存在。数据库进程运行正常,原库中的三条记录也都在,需要修正的是连接配置。

把同一条 DB_NAME 改回正确值,再更新 Web,V2 就重新连上了数据库,三条留言也恢复可读。程序没有重新构建,数据库没有重建。

查到业务代码或构建脚本有问题,就转回正常开发流程;资源不足则需要处理容量。Agent 根据查询结果决定下一步操作。
回滚记录完成,还要检查实际版本
配置错误修复后,继续用生产 V1 快照演练版本回退。
回退前的对照结果只有 Web 镜像和构建版本发生变化,没有组件增删,数据库配置和存储也没有差异,可以沿用原数据库及持久卷。
检查生产应用 V1 快照与当前版本,列出影响范围。确认后回退,并验证页面、业务 API 和已有数据。
快照回退只提交了一次。记录显示完成以后,页面却仍是 V2。继续检查已恢复的 V1 构建源,补充部署并更新 Web 实例,页面才恢复成 V1。
RainSkills 提供版本检查和执行流程,回退结果还要通过运行实例及业务请求确认。版本操作流程
回退后的页面显示 V1、生产环境和数据库已连接。V1 的两条记录可读,V2 新增的第 3 条留言也保留了下来。数据库没有重建,持久卷未变,也没有执行数据恢复或覆盖。


哪些工作可以交给 Agent
| 工作 | Rainbond + RainSkills 的做法 | 本次核验结果 |
|---|---|---|
| 首次部署 | Agent 分析运行需求,平台构建并管理组件依赖 | 开发 V1 页面和数据库读写通过 |
| 多环境交付 | 团队组织环境,组件库承载明确版本 | 生产应用使用独立数据库和配置 |
| 生产更新 | 检查差异、保留基线,只更新目标组件 | V2 生效,原有记录保留 |
| 配置排障 | 结合日志和连接信息确定处理范围 | 修正数据库名并更新 Web 后恢复 |
| 版本回退 | 检查快照,执行后继续核对运行实例 | 补充部署后恢复 V1,三条数据仍在 |
已有成熟 CI/CD 或 GitOps 的团队,可以保留原来的发布路径,让 Agent 参与项目分析和异常处理。还需要自己整理部署与运维流程的开发者,可以用 Rainbond 和 RainSkills 从一个小应用开始。
项目地址
Rainbond 开源项目
RainSkills 开源项目
RainSkills 安装与使用
RainSkills 安装与使用:支持的 Agent、运行环境与部署流程 | Rainbond
参考资料
[1] Jenkins Pipeline 文档
[2] 环境与部署规则
Deployments and environments - GitHub Docs
[3] Deployment 文档
[4] RainSkills 使用说明
RainSkills 安装与使用:支持的 Agent、运行环境与部署流程 | Rainbond
[5] 交付验证规则
[6] 应用模板交付
[7] 版本操作流程
更多推荐


所有评论(0)