ci: 全面根治CI稳定性问题 (#619) #620
Reference in New Issue
Block a user
Delete Branch "ci/stability-fix"
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?
根因诊断
DooD模式下,
docker run启动的PG/Redis容器跑在宿主机Docker上,端口映射到宿主机,但Validate和Integration Tests脚本里用127.0.0.1连接——在job容器里根本连不上宿主机端口。runner已配置host.docker.internal:host-gateway但脚本没用到。修复内容
1. 部署常驻PG实例(新CI服务器)
2. DooD模式适配 + 常驻PG支持
3. 关键步骤加重试
4. 非核心检查降级
5. Bug修复
附带修复
验证
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #620
⚠️ 问题(3个需要修改)
.gitea/workflows/ci-pipeline.yml 第564行 & 第887行:SSH命令参数传递存在安全与语法风险
ACR_USERNAME='${ACR_USERNAME}'修改为ACR_USERNAME=${ACR_USERNAME}移除了引号保护。如果环境变量(如密码)中包含空格、$符号或特殊字符,会导致Shell解析错误(空格截断命令)或远程Shell变量注入攻击($被展开)。虽然原注释提到是为了解决转义问题,但当前的修改方式牺牲了安全性。$,部署将失败;如果密码包含恶意字符,可能导致远程命令执行漏洞。export后通过SendEnv传递)。若必须解决嵌套引号问题,建议对变量值进行Base64编码传输,在远程端解码。scripts/ci/run_integration_tests.sh 第165行 & scripts/ci/run_validate.sh 第277行:硬编码数据库密码
SHARED_PG_PASSWORD="ci_pg_2026!"。scripts/ci/run_integration_tests.sh & scripts/ci/run_validate.sh:存在大量代码重复
detect_docker_host和wait_tcp_ready函数在两个文件中完全重复粘贴。scripts/ci/lib/utils.sh),然后在各脚本中通过source引入。💡 建议(2个可选)
scripts/ci/run_integration_tests.sh:建议添加
trap信号捕获cleanup代码段可能无法执行,导致共享数据库中残留大量ci_run_...数据库。建议在脚本开头添加trap cleanup EXIT INT TERM,确保异常退出时也能清理资源。scripts/ci/run_validate.sh 第124-131行:Bandit 安全扫描降级为非阻塞
✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 00:58:42 | 模型:
🗑️ 预览环境已清理
PR #620 已关闭或合并,对应的预览环境已被清理。