mcpField
D
devops

devops

github.com/iankiku云与 DevOps1843 次安装13 周前更新
代码仓库

关于 devops

devops 是面向软件项目的基础设施与部署指导技能,涵盖 CI/CD、Docker、监控、基础设施选择和事故响应的清单与实践。

主要功能

  1. 01部署前检查清单
  2. 02CI/CD 阶段及失败处理
  3. 03多阶段 Docker 构建指导
  4. 04监控与告警实践
  5. 05基础设施默认方案与事故响应

适用场景

  1. 01发布前检查部署准备情况
  2. 02规划 CI/CD 故障处理与回滚步骤
  3. 03制定 Docker 构建和监控规范
  4. 04梳理生产事故响应流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/iankiku/forwward-teams --skill devops

安装后在 Claude Code 中输入/devops确认已加载。

详细介绍

DevOps — 基础设施与部署

可靠发布。全面监控。快速修复。

部署检查清单

每次部署前:

  1. 所有测试均已通过 CI(不只是本地通过)
  2. 已在目标环境中设置环境变量
  3. 已使用接近生产环境的数据测试数据库迁移
  4. 已记录回滚计划(哪怕只是“还原此提交”)
  5. 健康检查端点已就绪并返回 200

CI/CD 流水线

push → lint → typecheck → test → build → deploy staging → smoke test → deploy prod
阶段失败时?操作
Lint/Types阻止合并在本地修复
测试阻止合并修复或更新测试
构建阻止合并修复构建错误
部署到预发布环境阻止部署到生产环境在预发布环境中调试
冒烟测试阻止部署到生产环境回滚预发布环境,进行调查
生产环境部署通知值班人员立即回滚

Docker

始终使用多阶段构建以减小镜像体积。检测技术栈并使用相应的基础镜像。

Node.js / TypeScript
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --production=false
COPY . .
RUN npm run build

FROM node:22-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/server.js"]
Python
FROM python:3.12-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Go
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o server ./cmd/api

FROM alpine:3.19
WORKDIR /app
COPY --from=builder /app/server .
EXPOSE 8080
CMD ["./server"]
Ruby on Rails
FROM ruby:3.3-slim AS builder
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install --without development test

FROM ruby:3.3-slim
WORKDIR /app
COPY --from=builder /usr/local/bundle /usr/local/bundle
COPY . .
EXPOSE 3000
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

对于其他技术栈(Java/JVM、.NET、Rust):遵循相同模式——构建阶段负责编译,最终阶段使用精简镜像。切勿将构建工具链复制到最终镜像中。

所有技术栈的规则:

  • 始终固定基础镜像版本(不要使用 latest)
  • 使用 .dockerignore——切勿打包构建产物、.git 或 .env 文件
  • 每个容器只运行一个进程
  • 添加健康检查:HEALTHCHECK CMD curl -f http://localhost:<PORT>/health || exit 1

监控

项目工具选项触发告警的条件
正常运行时间UptimeRobot、Checkly停机超过 30 秒
错误Sentry、Datadog错误率超过 1%
延迟Grafana、Datadogp95 超过 2 秒
资源云服务提供商指标CPU 超过 80%,内存超过 85%
日志Datadog、Axiom、CloudWatch错误模式、关键词

规则:

  • 每条告警都必须附带操作手册(哪怕只有一句话)
  • 如果告警触发后无需采取任何操作,就删除它——告警疲劳会造成严重影响
  • 记录结构化 JSON,而非 printf 字符串
  • 在每条日志中包含请求 ID,以便追踪

基础设施默认选项

决策默认选项原因
托管Vercel / Railway / Fly.io无需配置,可扩展
数据库托管 Postgres(Supabase、Neon、RDS)无需自行管理数据库
缓存Upstash Redis无服务器,无需运维
队列Inngest、Trigger.dev 或 SQS托管服务,内置重试
存储S3 / R2 / Supabase Storage低成本、可靠
DNSCloudflare快速,提供免费套餐
密钥通过平台设置环境变量切勿存放在代码或 git 中

事件响应

  1. 检测——告警触发或收到用户报告
  2. 确认——有人负责处理(5 分钟内)
  3. 缓解——回滚、关闭功能开关或扩容(先止住问题)
  4. 调查——问题缓解后查明根本原因
  5. 修复——添加测试并彻底修复
  6. 事后复盘——不追责,聚焦系统而非个人

评论

支持 Markdown