ci: Staging部署并行优化,镜像pull+容器启动+健康检查全部并行 #696
Reference in New Issue
Block a user
Delete Branch "ci/deploy-staging-parallel"
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部署脚本全面并行化,预计部署时间减少40-60%:
保持不变
文件变更
scripts/ci_staging_deploy.sh:重写为并行版本🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #696
⚠️ 问题(2个需要修改)
set -e模式下存在严重缺陷。脚本开头设置了set -eu,当docker run ... &命令执行失败(如端口冲突、镜像拉取未完成)时,Shell 会立即退出,导致后续的wait、错误统计 (START_FAILED) 以及rollback函数均不会执行。这会导致部署静默失败,环境处于不一致状态且无法自动回滚。rollback中同样使用了并行后台运行docker run ... &。由于继承主脚本的set -eu属性,如果某个旧镜像不存在导致回滚命令失败,脚本会立即退出,导致剩余的容器(如 Worker 或 Web)无法执行回滚操作。回滚逻辑应当“尽力而为”,不应因单一组件失败而中断整个恢复流程。💡 建议(2个可选)
wait $PID_API $PID_WORKER $PID_WEB的返回值仅代表最后一个结束的进程状态。虽然脚本后续通过解析日志和docker inspect进行了二次校验,逻辑上可行,但依赖日志文本匹配较为脆弱。建议分别捕获每个 PID 的wait返回值以提高健壮性。REGISTRY_TOKEN,SKIP_MIGRATION)的详细注释。虽然不影响功能,但降低了脚本的可维护性,建议恢复关键参数的文档说明。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能优化良好
🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 08:17:11 | 模型:
🗑️ 预览环境已清理
PR #696 已关闭或合并,对应的预览环境已被清理。