opsx
8bea331183
chore(release): 发布脚本对齐"统一使用 latest"策略
清单本来就用 latest(deployment.yaml / docker-compose.yml / prod.yml 的
${IMAGE_TAG:-latest}),但上一版 release.sh 会把 deployment.yaml 改成
不可变 tag 并把 pullPolicy 改成 IfNotPresent —— 与"统一用 latest"相反,
而且改完不提交的话下次 apply 又会退回最新 tag,容易造成实际版本与预期不符。
改为:
1) 一次构建打三个 tag:latest / v0.1 / <版本>-<日期>-<commit>,同时推送
2) 推送后**校验三个远端 digest 一致**,不一致直接退出(并发构建覆盖
latest 的经典事故,先拦住别部署)
3) 部署走 kubectl apply + rollout restart(image=latest + Always 强制重拉)
4) 部署完再核对 Pod digest 与远端 latest,不一致立即提示
5) 不再默认改清单;需要"固定版本部署"时显式 `--pin`
6) 回滚方式写清楚:把旧的不可变 tag 重新打成 latest 推上去
同时把集群里被我为了避开 tag 竞争临时改成 v11-1028-2252 的 Deployment
恢复成 latest + Always(已验证 Pod / Hub latest / Hub v0.1 三者 digest 一致
= 187062644c0f)。