fix(ci): 移除registry cache-to写入,避免ACR tag不可变导致构建卡死 #678

Merged
auto-approve-bot merged 1 commits from fix/remove-acr-cache-to into develop 2026-07-21 13:39:42 +08:00
Owner

问题

ACR镜像仓库设置为tag不可变(Immutable),导致--cache-to type=registry写缓存时因tag已存在而失败,触发构建重试浪费大量时间。

修复

  • 移除2处--cache-to type=registry写入操作
  • 保留--cache-from type=registry只读作为兜底缓存源(首次构建或本地缓存失效时仍可从ACR拉取缓存层)
  • 本地local cache读写保持不变

影响

  • 不再向ACR写入缓存镜像,彻底消除tag不可变导致的构建卡死问题
  • 缓存策略退化为:local cache为主 + registry cache只读兜底
  • 不同runner之间无法再通过ACR共享缓存写入,但读取仍可加速首次构建

验证:等待CI跑完确认3个Docker build耗时恢复正常。

## 问题 ACR镜像仓库设置为tag不可变(Immutable),导致`--cache-to type=registry`写缓存时因tag已存在而失败,触发构建重试浪费大量时间。 ## 修复 - 移除2处`--cache-to type=registry`写入操作 - 保留`--cache-from type=registry`只读作为兜底缓存源(首次构建或本地缓存失效时仍可从ACR拉取缓存层) - 本地local cache读写保持不变 ## 影响 - 不再向ACR写入缓存镜像,彻底消除tag不可变导致的构建卡死问题 - 缓存策略退化为:local cache为主 + registry cache只读兜底 - 不同runner之间无法再通过ACR共享缓存写入,但读取仍可加速首次构建 验证:等待CI跑完确认3个Docker build耗时恢复正常。
xiaoxia added 1 commit 2026-07-21 13:31:19 +08:00
fix(ci): 移除registry cache-to写入,避免ACR tag不可变导致构建卡死
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 23s
AI Code Review / AI Code Review (pull_request) Successful in 2m50s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 3m42s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 4m58s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 6m40s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 7m19s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 8m24s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 15s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 9m34s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 9m22s
a4a8c59865
- 移除两处--cache-to type=registry写入(ACR tag不可变导致写缓存失败触发重试)
- 保留--cache-from type=registry只读作为兜底缓存源
- 本地local cache读写保持不变
Collaborator

📊 审查概览

  • 整体评价:需修改
  • 严重问题数量:1 个
  • 一般建议数量:0 个

需修改的问题(严重)

  1. [scripts/ci/docker_build_push.sh: 53, 87] 缓存回写逻辑缺失导致构建性能退化
    • 问题描述:代码移除了 --cache-to "type=registry,..." 参数,但保留了 --cache-from "type=registry,..."。在 CI/CD 流水线中,构建环境通常是临时的,本地缓存(LOCAL_CACHE_DIR)在任务结束后会被销毁。如果不将构建产生的新缓存层推送到 Registry,后续的构建任务将无法利用本次构建产生的缓存,只能拉取旧的缓存数据。这会导致缓存命中率随时间推移急剧下降,构建时间变长,严重违背了使用缓存加速构建的初衷。
    • 修改建议:请恢复 --cache-to "type=registry,ref=${CACHE_REF},mode=max,ignore-error=true" 参数。如果确实不需要 Registry 缓存,请同时移除 --cache-from type=registry,否则将持续拉取无效的旧缓存。

💡 改进建议(一般)

良好实践


格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 13:34:05 | 模型:

### 📊 审查概览 - 整体评价:需修改 - 严重问题数量:1 个 - 一般建议数量:0 个 ### ❌ 需修改的问题(严重) 1. **[scripts/ci/docker_build_push.sh: 53, 87] 缓存回写逻辑缺失导致构建性能退化** - 问题描述:代码移除了 `--cache-to "type=registry,..."` 参数,但保留了 `--cache-from "type=registry,..."`。在 CI/CD 流水线中,构建环境通常是临时的,本地缓存(`LOCAL_CACHE_DIR`)在任务结束后会被销毁。如果不将构建产生的新缓存层推送到 Registry,后续的构建任务将无法利用本次构建产生的缓存,只能拉取旧的缓存数据。这会导致缓存命中率随时间推移急剧下降,构建时间变长,严重违背了使用缓存加速构建的初衷。 - 修改建议:请恢复 `--cache-to "type=registry,ref=${CACHE_REF},mode=max,ignore-error=true"` 参数。如果确实不需要 Registry 缓存,请同时移除 `--cache-from type=registry`,否则将持续拉取无效的旧缓存。 ### 💡 改进建议(一般) 无 ### ✅ 良好实践 无 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 13:34:05 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

项目 详情
PR号 #678
预览链接 https://pr-678.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #678 | | 预览链接 | [https://pr-678.preview.xiaoxiajianji.com](https://pr-678.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-07-21 13:38:37 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-21 13:38:38 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit cffe84c764 into develop 2026-07-21 13:39:42 +08:00
auto-approve-bot deleted branch fix/remove-acr-cache-to 2026-07-21 13:39:42 +08:00

🗑️ 预览环境已清理

PR #678 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #678 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.