其他
搭建 CI/CD 流水线与部署自动化时:从流水线阶段设计到蓝…
在需要设置部署流程、配置 CI/CD 或管理发布时,提供流水线阶段划分、部署策略、环境配置、健康检查、回滚与监控的完整做法。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 47/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 50/100 ×0.15
适用场景
搭建 CI/CD 流水线与部署自动化时:通用
解决思路
- 明确权限边界:规划、生成配置和运行只读校验都不等于授权部署;未经用户对确切操作和目标的明确批准,绝不 push、部署、回滚、变更生产基础设施或改动远程发布状态。
- 在执行任何已批准的变更前,先说明环境、命令、预期影响、验证信号和回滚路径;若目标或授权不明确就停止。
- 按顺序设计流水线阶段:lint → test → build → security → deploy-dev → deploy-staging → deploy-production。
- 用 GitHub Actions 定义 CI/CD:触发条件为 push 到 main/develop 分支以及针对 main 的 pull_request。
- lint 任务:runs-on ubuntu-latest,使用 actions/checkout@v4 和 actions/setup-node@v4(node-version '20'),执行 npm ci 和 npm run lint。
- test 任务:needs lint,checkout 后 setup-node,执行 npm ci 和 npm test。
- build 任务:needs test,执行 npm ci 和 npm run build,并用 actions/upload-artifact@v4 上传 name: build、path: dist/ 的产物。
- deploy-production 任务:needs build,条件 if: github.ref == 'refs/heads/main',设置 environment: production,用 actions/download-artifact@v4 下载 name: build、path: dist/ 的产物,然后执行 npm run deploy。
- 选择部署策略:蓝绿部署通过负载均衡器在 Blue/Green 两套环境间切换流量。
- 选择部署策略:滚动部署逐步用新版本 v2 替换旧版本 v1,从开始到结束分批推进。
- 选择部署策略:金丝雀部署先放少量流量(如 5%)到新版本 v2,监控指标后再逐步扩大(如 50%)。
- 用环境变量区分环境:生产设置 NODE_ENV=production、DATABASE_URL、API_KEY=${API_KEY}、SENTRY_DSN;开发设置 NODE_ENV=development、DATABASE_URL=postgresql://localhost:5432/dev。
- 用配置文件管理配置:如 config/production.ts 导出 database(url 取 process.env.DATABASE_URL、poolSize: 20)和 redis(url 取 process.env.REDIS_URL)。
- 实现健康检查端点 GET /health:返回 status、timestamp 和 checks(database、redis、external_api);若任一 check 不为 'ok' 则 status 置为 'degraded' 并返回 503,否则返回 200 JSON。
- 准备回滚方案:Kubernetes 用 kubectl rollout undo deployment/app;Docker 用 docker-compose down 后 docker-compose up -d --scale app=<previous-version>;Git 用 git revert HEAD 后 git push。
- 跟踪关键指标:部署频率、变更前置时间、平均恢复时间(MTTR)、变更失败率。
- 使用结构化日志:logger.info('Deployment started', { version: process.env.VERSION, environment: process.env.NODE_ENV, timestamp: new Date().toISOString() })。
- 用脚本生成部署配置:python3 scripts/generate_deploy.py --env <environment> --name <service-name>。
- 用脚本校验部署:python3 scripts/validate_deploy.py --input deploy-plan.md。
- 参考 references/pipelines.md、references/kubernetes.md、references/monitoring.md 获取流水线、K8s 部署配置和监控设置示例。
适用边界 · 注意事项
- 未获得用户对确切操作和目标的明确批准时,不要执行部署、回滚、变更生产基础设施或改动远程发布状态。
- 当目标环境或授权范围不明确时,应停止操作而不是继续。
- 仅做规划、生成配置或只读校验时,不应视为已获部署授权。