fix(ci): push :dev tag to registry for watchtower auto-update #1888
Merged
auto-approve-bot
merged 1 commits from 2026-09-14 14:26:05 +08:00
fix/ci-push-dev-tag into develop
1 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
55af4a8877 |
fix(ci): push :dev tag to registry for watchtower auto-update
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m57s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m22s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m44s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m8s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 3m28s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 5m1s
AI Code Review / AI Code Review (pull_request) Successful in 6m17s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 8m28s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 9m2s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 6m56s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 8s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 50s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 48h58m19s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 49h7m13s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 49h7m20s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 48h57m53s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 49h6m53s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 49h6m59s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 49h6m59s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 48h57m49s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 48h57m53s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 49h6m48s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 49h6m48s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 49h6m49s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 49h6m54s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 48h57m49s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 49h6m54s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 49h6m54s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 49h6m59s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 49h7m0s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 49h42m15s
## 问题
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 语法检查通过
|