c807bf1fab5b15ba80d40c7383ff849d5d19c43e
排查 PROD 误伤事故时连带发现 3 个会引发其他错误的位置:
1. backupCurrentDeployment 在远端 cp docker-compose.core.yml.backup 写死了 core 文件名
→ release 部署到 .7 时 core.yml 不存在会触发 set -e 退出。改为 cp ${env.COMPOSE_FILE}
并加 [ -f ... ] 检查避免硬失败。
2. deployService 在 ssh 远端命令里 docker compose pull/up 之前没 export IMAGE_TAG,
docker compose 会 fallback 到 yml 的 ${IMAGE_TAG:-latest},永远拉到 :latest 镜像
而不是本次构建的版本 tag。这就是 PROD 容器镜像显示 :latest 的根因——本意要拉
master-N-shortSHA 的镜像,但实际拉了 master 早先 push 的 :latest。
修复:注入 export IMAGE_TAG=${env.IMAGE_TAG} + REGISTRY_HOST。
3. getContainerNameForService 是 @NonCPS 函数,里面访问 env.CONTAINER_NAME_SUFFIX
在 NonCPS 上下文下 binding 不一定可达。改成把 suffix 作为参数传入,3 个调用点
全部加上 env.CONTAINER_NAME_SUFFIX 实参。函数纯粹无副作用。
Description
Languages
Java
80.2%
PLpgSQL
12.7%
TSQL
6.7%
Python
0.2%