fix: 重写 worker-base-image.yml,使用 docker build 替代 buildx #1426
Reference in New Issue
Block a user
Delete Branch "fix/worker-base-image-build"
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?
问题
Worker Base Image 构建(Run #33051)两个 job 全部失败:
docker tag失败docker buildx build --push不将镜像加载到本地 daemon。修复
重写
.gitea/workflows/worker-base-image.yml,参照 api-base-image.yml 的成功方案:docker_build_push.sh(buildx + registry cache)docker build+docker pushdocker buildx rm+prunedocker rmi+image prune验证点
docker build构建并加载到本地 daemondocker tag可正常找到镜像Fixes #1421
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[.gitea/workflows/worker-base-image.yml: 76] 性能回退风险
buildx和cache_from逻辑,改用普通的docker build。虽然这简化了配置,但会导致每次构建都重新拉取基础镜像和重新构建层,无法利用 Docker 层缓存,显著增加构建时间和网络消耗。建议确认是否需要保留缓存机制,或使用 BuildKit 的 inline cache 机制(--cache-to和--cache-from)。[.gitea/workflows/worker-base-image.yml: 80] 版本可追溯性建议
:latest。在 CI/CD 流程中,建议同时打上基于 Git SHA 或短 SHA 的 Tag(例如:${GITHUB_SHA::7}),以便于追溯特定版本的镜像,避免:latest被覆盖后无法回滚或定位问题。[.gitea/workflows/worker-base-image.yml: 76] 潜在的构建参数缺失
scripts/ci/docker_build_push.sh可能包含传递构建参数(如--build-arg GIT_SHA=...或VERSION=...)的逻辑。新的docker build命令中未包含任何--build-arg。请检查Dockerfile中是否有ARG指令依赖这些参数,如果有,需在此处补充,否则可能导致构建出的镜像元信息丢失或构建失败。✅ 良好实践
set -eu确保脚本在错误时退出,提高健壮性。|| echo进行错误捕获,避免因备用仓库推送失败导致主流程中断。buildxbuilder 创建和清理步骤,简化了单架构构建的流程,减少了依赖。🤖 由 AI 代码审查机器人自动生成 | 2026-08-18 10:39:27 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
✅ CI 已修复,请 review。
修复内容:
worker-base-image.yml:去掉 buildx,改用docker build+docker pushdocker_build_push.sh(该脚本的 registry cache 导出会导致 RPC 崩溃)根因:
--cache-to type=registry导出时 RPC 连接崩溃--push不加载镜像到本地 daemon,后续docker tag找不到镜像CI 结果: Code Quality ✅ | mypy ✅ | alembic ✅ | Unit Tests ✅ | Integration Tests ✅ | PR Build API Image ✅ | PR Build Worker Image ✅ | CI Gate ✅
注意: 合并后需手动触发一次
workflow_dispatch验证 worker-base-image.yml 实际构建。🗑️ 预览环境已清理
PR #1426 已关闭或合并,对应的预览环境已被清理。