电脑生活派
柔彩主题三 · 更轻盈的阅读体验

用GitLab CI轻松搞定网站自动部署

发布时间:2025-12-11 14:15:30 阅读:248 次

上线一个新网站,最烦人的不是写代码,而是每次改点东西都要手动上传文件、重启服务,一不小心还可能出错。最近我在折腾个人博客的时候,干脆把整个发布流程交给 GitLab CI 来跑,改完代码推上去,剩下的事它全包了,连刷新浏览器看效果都省了。

先搞清楚CI是啥

CI 全名叫持续集成(Continuous Integration),说白了就是你一提交代码,系统就自动帮你跑测试、打包、部署。GitLab 自带这套工具,不用额外搭 Jenkins 那种复杂玩意儿,对小项目特别友好。

关键一步:.gitlab-ci.yml 怎么写

在项目根目录加个 .gitlab-ci.yml 文件,这就是 CI 的“操作手册”。比如我这个静态博客,部署目标是一台云服务器,流程很简单:拉代码 → 生成页面 → 传到服务器。

stages:
  - deploy

deploy_job:
  stage: deploy
  script:
    - echo "开始部署..."
    - npm install
    - npm run build
    - rsync -av public/ user@your-server.com:/var/www/html --delete
  only:
    - main
  tags:
    - runner-web

这里的 tags 要和你自己注册的 Runner 对得上。Runner 就是干活的机器,可以是本地电脑,也可以是云主机。我在家里那台一直开机的旧笔记本上装了个 GitLab Runner,专门跑这类任务。

怎么让服务器接受自动推送

上面用了 rsync 同步文件,得确保 CI 能登录服务器。别用密码,太不安全。推荐用 SSH 密钥:

在 Runner 主机上生成密钥对,把公钥放进服务器的 ~/.ssh/authorized_keys,私钥加到 GitLab 的 Deploy Keys 里。这样每次部署都不用手动输密码,也不怕被人撞库。

实际用起来有多方便

有次我在地铁上改了几行 CSS,想调个字体大小。手机上直接用 GitLab App 提交了修改,一抬头快到站了,顺手打开博客链接——新样式已经生效了。这种“写了就上线”的感觉,比以前还得连 VPS 敲命令强太多了。

遇到过的小坑

刚开始配的时候总失败,查日志发现是 rsync 命令没装。后来在 script 里加了 apt-get update && apt-get install -y rsync 才行。还有一次是权限问题,部署用户没法写 /var/www/html,得提前在服务器上把目录归属改好。

另外建议加个通知机制。我配了钉钉机器人,在部署成功或失败时发条消息,不用老去刷 CI 页面。看到绿勾那一刻,心里特别踏实。