chore(ci): 升级migration验证,新增4项检查 (#451) #857
Reference in New Issue
Block a user
Delete Branch "chore/ci-migration-validation-upgrade"
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?
背景 (#451)
当前migration validate只跑
alembic upgrade head,只能发现升级失败,无法检测:改动
新增:
scripts/ci/check_migration_naming.pymigration文件命名规范检查,3项规则:
NNN_description.py格式(3位数字前缀+下划线+小写描述)升级:
scripts/ci/validate_migration.sh从1项检查升级为5项:
优化点
影响范围
关联: #451
代码审查结果 - PR #857
⚠️ 问题(2个需要修改)
scripts/ci/validate_migration.sh 第237行:
trap cleanup_db EXIT设置位置过晚,导致资源泄漏风险。else分支),PG_CONTAINER在第197行启动,随后进行wait_tcp_ready检查。如果网络检查超时或失败,脚本会因为set -eu退出,此时第237行的trap尚未执行,导致已创建的 Docker 容器无法被清理,造成 CI 环境资源泄漏。trap cleanup_db EXIT移至资源创建之后、网络检查之前;或者定义一个通用的清理函数,在脚本开头就设置 trap,并在函数内部判断资源是否存在。scripts/ci/check_migration_naming.py 第52行:依赖错误消息字符串内容进行逻辑判断,导致输出误导。
any("命名格式不规范" in e ... for e in errors)来判断是否打印“格式正确”的提示。如果errors列表中包含其他类型的错误(如“目录不存在”),该条件为假,程序仍会打印“全部 X 个文件名格式正确”,掩盖了实际的错误状态。has_format_error)来记录格式检查是否通过,而非扫描错误消息字符串。💡 建议(2个可选)
scripts/ci/validate_migration.sh 第265行:
alembic check的异常处理过于宽泛。alembic check命令执行出错(如配置错误、ImportError)时,脚本仅将其作为“非阻断”警告处理。这可能会掩盖 CI 环境配置错误或代码逻辑错误。建议将“执行出错”的情况视为严重错误并退出 CI,或者至少将其与“检测到Model变更”的情况区分处理。scripts/ci/validate_migration.sh 第249行:提示信息与实际情况可能不符。
TOTAL_REVS为 0 时,提示信息仍为“只有1个migration”。虽然逻辑上跳过了回滚是正确的,但提示信息不准确。建议修改为“Migration数量少于2个,跳过...”。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 16:17:34 | 模型:
🗑️ 预览环境已清理
PR #857 已关闭或合并,对应的预览环境已被清理。