知用网
白蓝主题五 · 清爽阅读
首页  > 软件安装

部署自动化前后端部署:从手动到自动的平滑过渡

手动部署的日子真够呛

刚接手公司项目那会儿,前端改个按钮颜色,后端调个接口字段,都得自己登录服务器,传文件、重启服务,生怕哪步手抖出错。有一次周五下午改完代码,顺手上传了前端包,结果忘了打包环境变量,线上直接报错,用户进不了首页。那一晚上,我和运维轮流盯着日志,反复上传覆盖,像极了小时候擦不干净黑板被罚站。

自动部署不是高岭之花

后来团队决定搞自动化部署,其实没那么玄乎。核心就是写脚本让机器代替人做重复的事。前端用 Vue 项目举例,只要在 GitHub 或 GitLab 上配置一个 CI/CD 文件,比如 .gitlab-ci.yml,代码一合并,自动跑测试、打包、上传到服务器,最后刷新 CDN 缓存,全程不用动手。

deploy-frontend:
stage: deploy
script:
- npm install
- npm run build
- rsync -av dist/ user@server:/var/www/frontend/
only:
- main

后端也能稳稳接住

后端 Node.js 或 Java 项目也一样。以前发布一个 jar 包,得先停服务,备份老版本,再替换文件,最后启动。现在配合 PM2 或 Docker,写个部署脚本,自动拉取最新镜像,滚动更新容器,用户几乎无感。哪怕中间失败,也能快速回滚到上一版。

deploy-backend:
image: docker:latest
services:
- docker:dind
script:
- docker login -u $REGISTRY_USER -p $REGISTRY_PASS
- docker pull registry.example.com/myapp:latest
- docker stop myapp || true
- docker rm myapp || true
- docker run -d --name myapp -p 3000:3000 registry.example.com/myapp:latest

前后端协同更省心

真正的甜头是协作变顺畅了。前端提交代码后,自动部署到预发环境;后端接口更新,自动通知前端联调。测试同学也不用总问“现在测的是哪个版本”,因为每个提交都有对应可访问的地址。上线不再是“提心吊胆夜”,变成了“点一下合并按钮”的日常操作。

刚开始可能要花几天搭流程,但之后每次发布节省的时间,加起来早就回本了。就像装了个自动咖啡机,虽然买的时候肉疼,可每天早上不用手磨豆子,谁还愿意回去?