fix(ci): 修复2个P0级bug - acr-cleanup完全不可用 + production-e2e DooD必然失败 #1112
Reference in New Issue
Block a user
Delete Branch "fix/ci-p0-bugs-0728"
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?
P0 修复(2个)
1. acr-cleanup.yml 完全不可用
$GITEA_OUTPUT写错(应为$GITHUB_OUTPUT),白名单outputs完全失效PREVIEW_SSH_KEY(应为STAGING_SSH_KEY),可能不匹配STAGING_SSH_HOST/PORT/USER没从secret读,默认值可能不准2. production-e2e DooD模式下必然失败
-v "$PWD:/workspace"挂载,DooD模式下挂载的是宿主机路径,代码根本进不去docker create + docker cp模式(与staging-e2e一致)两个都是P0级,建议快速合入。
🗑️ 预览环境已清理
PR #1112 已关闭或合并,对应的预览环境已被清理。
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
[.gitea/workflows/ci-pipeline.yml: 1496-1497] Docker 拷贝遗漏 package.json
docker cp将apps目录和package-lock.json拷贝到容器中,但遗漏了根目录的package.json。npm ci命令通常需要package.json和package-lock.json配对使用来验证依赖树的一致性。缺少package.json将导致npm ci执行失败或无法正确还原依赖。docker cp package-lock.json ...之前或之后,添加docker cp package.json "$CONTAINER_NAME:/workspace/"。[.gitea/workflows/ci-pipeline.yml: 1489-1504] 容器资源泄漏风险
docker run --rm(自动清理)改为手动管理容器生命周期(create -> cp -> start -> rm),但未添加trap捕获异常退出信号。如果在docker cp或docker start阶段脚本因错误退出(如set -eu触发),docker rm将不会被执行,导致僵尸容器在 CI 节点上累积,消耗系统资源。trap 'docker rm -f "$CONTAINER_NAME" 2>/dev/null' EXIT,确保无论脚本是否成功退出都会清理容器。💡 改进建议(不阻塞合并)
无
✅ 良好实践
printf '%s\n'代替echo写入 SSH 私钥,有效避免了echo对转义字符的潜在解析问题,提升了安全性。STAGING_SSH_KEY是否存在的显式检查,并在缺失时优雅跳过,避免了后续 SSH 连接失败报错,增强了健壮性。-v挂载的场景,采用docker create+docker cp的变通方案是合理的工程实践。🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 08:19:54 | 模型: