跳转至

DevOps 流程

DevOps 是 Vibe Coding 的高价值场景——CI/CD 配置、Dockerfile、IaC 代码有清晰的规范,AI 能高效生成。

CI/CD 配置

GitHub Actions 工作流

背景:Next.js 项目,部署到 Vercel,
      测试使用 Vitest,类型检查使用 tsc。

目标:创建 CI 工作流,在 PR 时自动运行
步骤:
  1. 安装依赖(使用 pnpm,缓存 node_modules)
  2. 类型检查(tsc --noEmit)
  3. Lint(eslint)
  4. 单元测试(vitest run)
  5. 构建检查(next build)

触发条件:PR 到 main 分支,push 到 main 分支
约束:
  - 使用 pnpm(不是 npm 或 yarn)
  - Node.js 版本从 .nvmrc 读取
  - 并行运行类型检查和 Lint(节省时间)
  - 失败时在 PR 上添加注释

验收:在测试 PR 上触发工作流,所有步骤通过

容器化

背景:Python FastAPI 应用,需要容器化部署

目标:创建生产级 Dockerfile
要求:
  - 多阶段构建(builder + runtime)
  - 非 root 用户运行
  - 最小化镜像体积(目标 < 200MB)
  - 健康检查端点:GET /health

基础镜像:python:3.11-slim
依赖文件:requirements.txt(已存在)

约束:
  - 不在镜像中包含测试依赖
  - 敏感配置通过环境变量注入,不硬编码

验收:
  docker build -t app . 成功
  docker run -p 8000:8000 app
  curl http://localhost:8000/health 返回 200

基础设施即代码

Terraform

背景:AWS 环境,需要为新服务创建基础设施
现有模块:[附上现有 Terraform 模块结构]

目标:创建 ECS Fargate 服务
资源:
  - ECS Task Definition(CPU: 256, Memory: 512)
  - ECS Service(期望实例数: 2)
  - ALB Target Group
  - CloudWatch Log Group(保留 30 天)

约束:
  - 沿用现有的 VPC 和安全组(通过 data source 引用)
  - 使用现有的 ECR 仓库
  - 标签规范:{ Environment, Project, ManagedBy = "terraform" }

验收:
  terraform plan 无错误
  terraform apply 后服务健康检查通过

监控告警

背景:Prometheus + Grafana 监控栈,
      应用已暴露 /metrics 端点

目标:为 API 服务创建告警规则
告警项:
  1. 错误率 > 1%(5 分钟窗口)
  2. P99 延迟 > 1 秒(5 分钟窗口)
  3. 实例数 < 2(服务降级)
  4. 内存使用 > 80%

通知:发送到 PagerDuty(严重)和 Slack(警告)
约束:
  - 使用 Prometheus alerting rules 格式(YAML)
  - 告警需要有 runbook_url 注释
  - 避免告警风暴(添加合理的 for 时间)

验收:在测试环境触发告警,确认通知正常发送

DevOps 特有的验证要求

验证项 说明
幂等性 重复执行不产生副作用
回滚方案 每个变更都有对应的回滚步骤
最小权限 IAM 角色、容器用户遵循最小权限原则
密钥管理 无硬编码密钥,使用 Secrets Manager
变更影响 评估对现有服务的影响范围

常见陷阱

陷阱:直接应用到生产环境

所有 IaC 变更必须先在测试环境验证,再通过 PR 审查,最后才能应用到生产。

陷阱:忽略回滚方案

在任务简报中要求 AI 同时提供回滚步骤,而不是事后再想。

陷阱:硬编码账号 ID 和区域

要求 AI 使用变量或 data source,而不是硬编码 AWS 账号 ID、区域等环境特定值。