fix(ci): resolve Staging API Integration Tests 0s failure - container name conflict #1278
Reference in New Issue
Block a user
Delete Branch "fix/staging-tests-container-cleanup"
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?
问题
Staging API Integration Tests 每次都在 0 秒内失败(秒挂)。
根因
通过 Gitea Actions 日志确认:
CI 容器内 PID 每次都是 38,所以容器名固定是
staging-api-tests-38。上一次运行失败后set -eu直接退出,没有执行到docker rm,残留容器导致下次docker create立即失败。E2E job 有
docker rm -f清理步骤所以没这个问题,API Tests job 漏了这个步骤。修复内容
docker create前加docker rm -f清理残留容器(与 staging-e2e 保持一致)docker cp package-lock.json行(该文件在仓库根目录不存在,且已通过docker cp apps包含)影响
Fixes #1275
🗑️ 预览环境已清理
PR #1278 已关闭或合并,对应的预览环境已被清理。
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
package-lock.json拷贝导致依赖安装失败npm ci,该命令严格要求当前目录下必须存在package-lock.json,否则会报错退出。原代码显式地将宿主机的package-lock.json拷贝到容器工作目录,说明该文件位于apps目录之外。删除这行拷贝命令后,容器内将缺失该文件,导致npm ci无法执行,CI 流程必然失败。package-lock.json是否已移动至apps目录内。如果未移动,必须恢复docker cp package-lock.json ...这行代码;如果已移动,请确保npm ci的工作目录(CWD)正确切换到了包含该文件的目录(当前命令未显示切换目录的操作)。💡 改进建议(不阻塞合并)
无
✅ 良好实践
docker create之前添加docker rm -f ...是非常好的实践,有效解决了因上次构建异常退出导致容器名称残留("name already in use")引发的偶发性失败。🤖 由 AI 代码审查机器人自动生成 | 2026-08-07 12:11:35 | 模型:
🚀 预览环境已部署