M18CI 自动部署与测试环境
push 即上线,但要能排障
学完能写出一条可排障的流水线,并知道它什么时候在骗你
01为什么重要
流水线最容易骗人的地方是「绿」。配置缺失时它会优雅跳过,run 显示成功,实际一个文件都没传。所以判断标准必须是步骤级结果,不是那个绿勾。
02要讲清的 4 件事核心要点
- workflow 骨架与 Secrets 命名
- 构建 + 传输步骤;降级护栏(产物版本低于线上即中止)
- 测试环境:先用子域或端口跑预发布,验过再切主域
- 步骤级排障,不看 run 的绿勾
03照着做:4 步操作顺序
- 在仓库里配 LH_HOST / USER / ROOT / SSH_KEY
- 写 workflow:构建 + 传输 + 降级护栏
- push 后下钻到步骤级看结果,别看 run 绿勾
- 故意把版本号改小,验证护栏会拦
curl -s "https://api.github.com/repos/OWNER/REPO/actions/runs?per_page=1" | grep -E "conclusion|head_sha"
# 再下钻到 jobs,看 Deploy 那一步是 success 还是 skipped
04产出物与验收做完怎么算过
产出物
一条可用流水线 + 一个预发布地址
验收判据
可验push 后 5 分钟内线上内容变化且能指出哪一步生效;预发布与生产可分别访问
05练习15 分钟内可做完
故意把版本号改小再 push,观察降级护栏是否把你拦下。
06最容易踩的坑
runner 到服务器链路不稳会卡在 in_progress 并留僵尸会话;重跑旧部署会造成「失败的绿色部署」
后果:重跑一个旧的部署 run,把旧产物重新盖回线上,而它最后只因自检失败才标红——「失败的绿部署」比红灯危险。
07自检表进度存在本机浏览器
0 / 6
08本讲术语全部 28 条
- 降级护栏:上传前把本次产物版本与线上比对,产物更旧就中止,防止旧版本覆盖新版本。
- 预发布:上线前先在独立地址(子域或端口)跑一遍真环境,验过再切主域,不拿生产当试验场。
- CI 与 Actions:CI=每次提交后自动跑构建与检查;GitHub Actions 是它的一种实现,配置写在 .github/workflows/。
- Secrets:仓库里加密保存的变量(如服务器地址与私钥),只在流水线运行时注入,不进代码。