持续部署流程步骤详解:让代码上线像发朋友圈一样简单

在天天顺科技,我们团队每天要发布好几次功能更新。以前每次上线都像打仗,得拉上开发、测试、运维一起熬夜,生怕哪里出错。后来我们把持续部署(CD)流程跑顺了,现在改完代码点一下,自动测试、打包、发布全搞定,比点外卖还快。

1. 代码提交触发流水线

程序员写完功能,把代码推到 Git 主干分支,比如 main 或 release 分支。这个动作就像按下了启动键,CI/CD 工具立刻开始干活。我们用的是 GitLab CI,只要检测到新提交,就会自动拉取代码,进入下一步。

2. 自动化构建与单元测试

系统会根据项目类型执行构建命令。比如一个 Node.js 项目,会运行 npm install 和 npm run build。紧接着跑单元测试,确保新加的代码没把老功能搞坏。

npm install
npm run build
npm test

如果测试失败,流程直接终止,钉钉群立刻弹出告警消息,谁提交的谁负责修。

3. 镜像打包并推送到仓库

前端构建出静态资源,后端打成 Docker 镜像。我们用 Dockerfile 定义服务环境,然后构建镜像并打上版本标签,推送到私有镜像仓库。

docker build -t myapp:<commit-id> .
docker push registry.tts-tech.com/myapp:<commit-id>

4. 自动部署到预发环境

镜像推完后,通过 Kubernetes 配置文件或 Helm Chart 把新版本部署到预发(staging)环境。这个环境和线上几乎一模一样,用来做最后验证。

我们会跑一遍自动化集成测试,比如用 Postman 的 CLI 工具 newman 调接口,检查返回数据是否正常。

5. 手动审批或自动发布到生产

有些公司关键业务需要人工点“通过”才能上线,我们在钉钉审批流里加了一步,产品经理确认没问题后,点击同意,系统继续往下走。

如果是非核心模块,比如后台管理页面,就直接配置为自动发布,省掉等待时间。

6. 生产环境部署与健康检查

真正上线时,K8s 会滚动更新 Pod,逐步替换旧实例。每换一批,系统自动发起健康检查,访问 /health 接口看服务是否响应正常。

curl -f http://myapp-prod/health

一旦发现异常,自动触发回滚,把上个版本重新拉起来,保证用户几乎无感。

7. 日志与监控反馈闭环

上线后不是就完了。我们用 ELK 收集日志,Prometheus 抓指标。如果错误率突然上升,Grafana 告警面板变红,值班人员马上能收到短信提醒。

有一次上线后发现数据库连接暴增,监控秒级发现,5 分钟内完成回滚,避免了更大影响。这套流程现在成了我们团队的“安全带”。