做开发或者运维的朋友都知道,项目写完只是第一步,真正让人头大的是把代码顺利部署到服务器上。以前手动上传文件、重启服务,一不小心就出错,现在有越来越多自动化部署工具可以帮忙,省时又省心。
GitLab CI/CD:集成度高,适合团队协作
如果你已经在用 GitLab 管理代码,那它的 CI/CD 功能可以直接拿来用,不用额外搭系统。每次提交代码后,自动跑测试、打包、部署,整个流程写在 .gitlab-ci.yml 里就行。
deploy:
stage: deploy
script:
- ssh user@server "cd /var/www/app && git pull origin main && npm install && pm2 restart app"
only:
- main
适合中小型项目,尤其是前后端都用 GitLab 托管的团队。
Github Actions:轻量灵活,适合个人和小项目
用 GitHub 的人越来越多,Actions 基本成了标配。你可以在仓库里直接配置工作流,比如前端构建完自动推到 CDN,后端服务也能一键发到云服务器。
name: Deploy to Server
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy via SSH
uses: appleboy/ssh-action@v0.1.5
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /app && git pull && npm install && pm2 restart server
对个人开发者特别友好,配置简单,还能免费用。
Jenkins:老牌王者,功能强大但需要维护
Jenkins 是很多公司内部部署系统的首选,插件多到能接上任何系统。你可以用它拉代码、跑单元测试、发邮件通知、甚至自动扩容云主机。
不过 Jenkins 要自己搭服务器,界面看着有点老,配置也复杂。适合有一定运维经验的团队,特别是需要私有化部署的场景。
Netlify 和 Vercel:前端部署神器
如果你主要做静态网站或 React/Vue 项目,Netlify 和 Vercel 几乎是开箱即用。连上 GitHub 仓库,设置一下构建命令,域名都给你配好,HTTPS 自动生效。
比如 Vercel,你提个 PR,它立马生成一个预览链接,产品经理点开就能看效果,不用等合并上线。这种体验在实际协作中特别实用。
Ansible:批量操作服务器的好帮手
当你有几十台服务器要统一更新配置或部署服务,手动一台台来不现实。Ansible 用 YAML 写任务脚本,通过 SSH 批量执行,不需要在目标机器装客户端。
- name: Deploy web app
hosts: webservers
tasks:
- name: Pull latest code
shell: cd /var/www/app && git pull origin main
- name: Restart service
systemd:
name: app.service
state: restarted
适合有一定 Linux 基础的用户,写一次脚本,以后一键发布。
这些工具各有侧重,选哪个得看你的项目规模和团队习惯。小项目用 GitHub Actions 或 Vercel 最快,团队协作可以试试 GitLab CI,复杂环境再上 Jenkins 或 Ansible。关键是把重复动作自动化,别让部署拖慢开发节奏。