用途
Deployment Automation 是一个用于自动化应用部署的技能,目标是把应用部署到云平台和服务器。根据资料,它适用于以下场景:
- 新项目:从零搭建自动化部署
- 改进手动部署:自动化重复的手动任务
- 多环境:分离开发、预发和生产环境
- 扩展:引入 Kubernetes 以应对流量增长
主要能力
该技能以分步指令的形式,覆盖部署自动化的多个环节:
- Docker 容器化:提供 Node.js 应用的多阶段构建 Dockerfile 示例(含非 root 用户、EXPOSE、HEALTHCHECK、CMD),以及 .dockerignore 示例和构建、运行、查看日志、停止删除容器的命令。
- GitHub Actions CI/CD:提供 .github/workflows/deploy.yml 示例,包含 test、build、deploy 三个 job,涉及代码检出、Node.js 环境设置、依赖安装、lint、测试与覆盖率上传、Docker Buildx、登录容器镜像仓库、提取元数据、构建推送镜像,以及通过 SSH 部署到生产环境。
- Kubernetes 部署:提供 k8s/deployment.yaml 示例,包含 Deployment(副本数、滚动更新策略、环境变量、资源请求与限制、存活与就绪探针)、Service(LoadBalancer)和 HorizontalPodAutoscaler(基于 CPU 与内存利用率自动扩缩容),并给出 deploy.sh 部署脚本(应用清单、更新镜像、等待 rollout、验证)。
- Vercel/Netlify 前端部署:提供 vercel.json 示例(构建、环境变量、区域、响应头、重定向)以及 Vercel CLI 的安装、登录、预览部署、生产部署和设置环境变量命令。
- 零停机部署策略:提供蓝绿部署的 docker-compose 示例(nginx、app-blue、app-green)以及 switch.sh 切换脚本(部署到非活动环境、健康检查、切换 nginx、更新当前颜色、延迟停止旧环境、失败回滚)。
使用方式
技能以“Instructions”形式给出操作步骤,用户可按 Step 1 至 Step 5 依次执行:先做 Docker 容器化,再配置 GitHub Actions CI/CD,然后进行 Kubernetes 部署,接着处理前端平台部署,最后采用零停机部署策略。每一步都附带可直接参考的配置文件和命令。
输出格式为一份部署检查清单,分为部署前、部署中、部署后三个阶段,例如部署前需确认测试通过、代码评审通过、环境变量已配置、数据库迁移就绪、回滚方案已记录;部署中需确认镜像已构建打标签、已推送仓库、清单已应用、滚动更新已开始、Pod 健康就绪;部署后需确认健康检查端点响应、监控日志生效、性能基线建立、旧 Pod 已终止、变更日志已记录。
约束与规则
必须遵守(MUST):
- 健康检查:所有服务需提供健康检查端点(示例为 /health 返回 200)
- 优雅关闭:处理 SIGTERM 信号(示例中关闭 server 与 db 后退出)
- 环境变量分离:不得硬编码,使用 .env 文件
禁止事项(MUST NOT):
- 不提交密钥:绝不将 API key 或密码提交到 Git
- 生产环境禁用调试模式:必须设置 NODE_ENV=production
- 避免只使用 latest 标签:应使用版本标签(如 v1.0.0、sha-abc123)
最佳实践
资料列出的最佳实践包括:多阶段 Docker 构建以减小镜像体积;不可变基础设施,重新部署而非修改服务器;蓝绿部署实现零停机与便捷回滚;必须进行监控(Prometheus、Grafana、Datadog)。
适用场景与限制
该技能适合需要建立或改进部署流程的团队,尤其是使用 Node.js、Docker、Kubernetes、GitHub Actions 以及 Vercel/Netlify 的技术栈。资料中给出的示例以 Node.js 应用为主,其他语言或框架的适配方式暂未提供。关于收费、价格、平台支持范围等具体信息,资料中暂未提供。
元数据
- 当前版本:1.0.0
- 最后更新:2025-01-01
- 兼容平台:Claude、ChatGPT、Gemini
- 相关技能:monitoring(部署后监控)、security(部署安全)
- 标签:#deployment #CI/CD #Docker #Kubernetes #automation #infrastructure