fix(ci): push :dev tag to registry for watchtower auto-update #1888
Reference in New Issue
Block a user
Delete Branch "fix/ci-push-dev-tag"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
scripts/build_release_images.sh在构建 Docker 镜像时只 push 了 SHA/版本 tag,没有 push:devfloating tag。导致 staging 的 Watchtower(监听:dev做自动更新)找不到新镜像,无法触发自动 pull + restart。修改内容
1.
scripts/build_release_images.shWEB_DEV本地 tag(原脚本漏了 web 的 dev tag,仅 API/WORKER 有)API_LATEST/WORKER_LATEST重命名为API_DEV/WORKER_DEV/WEB_DEV,语义更清晰REGISTRY_API_DEV/REGISTRY_WORKER_DEV/REGISTRY_WEB_DEV三个 registry 级:devtagPUSH_DEV_TAG判断:仅当BUILD_ENV=staging或BRANCH_NAME=develop时才额外 tag 并 push:devtag;production/release tag 构建不推送,避免污染生产-t "$WEB_IMAGE" -t "$WEB_DEV"(原来 web 只打了 VERSION tag)2.
scripts/ci_staging_deploy.shIMAGE_TAG(commit SHA)做确定性部署,不要改成:dev。:dev是 floating tag,可能被并发覆盖,部署/回滚必须锚定 SHA。Watchtower 才是:devtag 的消费者。影响范围
PUSH_DEV_TAG=0,行为完全不变:devtag,Watchtower 可立即感知新镜像触发自动更新REGISTRY环境变量仍可由 CI 覆盖指向阿里云 ACR(脚本默认git.xiaoxiajianji.com,CI 实际传xiaoxia-registry.cn-hangzhou.cr.aliyuncs.com/xiaoxiakeji)bash -n两个脚本语法检查通过验证
bash -n scripts/build_release_images.sh scripts/ci_staging_deploy.sh通过## 问题 scripts/build_release_images.sh 在构建 Docker 镜像时只 push 了 SHA/版本 tag,没有 push :dev floating tag。导致 staging 的 Watchtower(监听 :dev 做自动更新)找不到 新镜像,无法触发自动 pull + restart。 ## 修改 1. scripts/build_release_images.sh: - 新增 WEB_DEV 本地 tag(原脚本漏了 web 的 dev tag,仅 API/WORKER 有) - 将 API_LATEST/WORKER_LATEST 重命名为 API_DEV/WORKER_DEV/WEB_DEV,语义更清晰 - 新增 REGISTRY_API_DEV/REGISTRY_WORKER_DEV/REGISTRY_WEB_DEV 三个 registry 级 :dev tag - 新增 PUSH_DEV_TAG 判断:仅当 BUILD_ENV=staging 或 BRANCH_NAME=develop 时才 额外 tag 并 push :dev tag;production/release tag 构建不推送,避免污染 - 构建 web 镜像时也同时打 -t "$WEB_IMAGE" -t "$WEB_DEV"(原来 web 只打了 VERSION tag) 2. scripts/ci_staging_deploy.sh: - 在 pull 段加注释强调:必须使用 IMAGE_TAG(commit SHA)做确定性部署, 不要改成 :dev。:dev 是 floating tag 可能被并发覆盖,部署/回滚必须锚定 SHA。 Watchtower 才是 :dev tag 的消费者。 ## 影响范围 - 不影响生产构建:production/release 场景 PUSH_DEV_TAG=0,行为不变 - staging/develop 构建:push 完成 SHA tag 后额外 push 三个 :dev tag,Watchtower 可立即感知新镜像并触发自动更新 - REGISTRY 环境变量仍可由 CI 覆盖指向阿里云 ACR(默认 git.xiaoxiajianji.com) - bash -n 语法检查通过🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1888 已关闭或合并,对应的预览环境已被清理。