从 0 到上线 网站建设实训课
总览/ 课程地图/ S4 自动化

M19拉取式部署

所属路径 B / C 第 19 / 31 讲 S4 自动化
runner 不靠谱时的兜底
学完能在 CI 完全不可用时照常上线

01为什么重要

当 CI 到服务器的链路不稳时,最稳的办法是把方向反过来:服务器自己来取。发起方一变,那个不稳定的环节就不在关键路径上了。

02要讲清的 3 件事核心要点

  • 为什么放弃 runner 直推
  • systemd timer + 部署脚本;Deploy Key 只读
  • 已部署提交记录;journalctl 排障;手动触发不等待

03照着做:4 步操作顺序

  1. 在服务器装部署脚本与 systemd timer
  2. 配只读 Deploy Key,记录已部署 SHA
  3. 手动触发一次,确认不依赖 CI
  4. 比对仓库清单与服务器文件,差集为空
systemctl list-timers deploy.timer
systemctl start deploy.service       # 不等下一轮,立刻跑
journalctl -u deploy -n 50 --no-pager

04产出物与验收做完怎么算过

产出物

两条通道并存:快通道 + 兜底通道

验收判据

可验停用 CI 后仍能完成一次上线
可验仓库文件清单与服务器实际文件比对,差集为空

05练习15 分钟内可做完

断掉 CI,只用服务器侧通道发一次版。

06最容易踩的坑

新增文件忘加进 FILES 白名单:仓库里有、提交成功、CI 全绿,线上打开却是 404
后果:两条通道各自维护一份文件清单,改一处漏一处,结果一条能上、一条不能。

07自检表进度存在本机浏览器

0 / 7

08本讲术语全部 28 条

  • 白名单部署:只上传清单里列出的文件,不是整目录覆盖。清单通常要维护两处,容易不同步。
  • 拉取式部署:服务器定时自己从仓库拉取并发布,不依赖 CI 主动推。
  • Deploy Key:只对单个仓库有效的部署密钥,通常设为只读。
  • CI 与 Actions:CI=每次提交后自动跑构建与检查;GitHub Actions 是它的一种实现,配置写在 .github/workflows/。