如何在Azure DevOps中实现EF Core迁移脚本的门禁审核与发布管控?
Azure DevOps EF Core 迁移脚本门禁审核解决方案
核心门禁审核优化方案
你现有方案的核心问题是把脚本打在日志里查找效率低,用原生Azure DevOps功能就能完成优化,不需要直接转用Octopus Deploy:
- 构建阶段生成幂等迁移脚本后,直接用
PublishBuildArtifacts任务把sql文件作为独立构建产物上传,不要输出到日志 - 给数据库部署的发布阶段配置预审批门槛,同时在审批通知里配置构建产物的快速访问入口,审批人不用进流水线详情翻日志,点通知里的入口就能直接查看或下载迁移脚本
- 可选加自动校验前置步骤:构建阶段加脚本扫描规则,匹配
DROP TABLE、DROP COLUMN这类高危操作,命中就直接阻断构建,减少人工审核的工作量
回滚脚本生成方案
可以直接在构建阶段生成对应回滚脚本,完全支持获取两次版本差量生成:
- 首先获取上一次成功部署到目标环境的迁移版本号,两种可靠实现方式:
- 把上一次成功部署的迁移版本号存在Azure DevOps变量组中,每次部署完成后运行脚本自动更新该变量值
- 直接查询目标环境的
__EFMigrationsHistory系统表,读取当前最新的迁移版本号,这个方式不会出现版本记录不同步的问题
- 拿到上一版本号后,运行EF Core命令生成回滚脚本:
dotnet ef migrations script [当前最新迁移版本号] [上一次成功部署的迁移版本号] --output rollback.sql --idempotent - 把生成的rollback.sql和正向迁移脚本一起作为构建产物上传,需要回滚时直接用对应版本的回滚脚本执行即可
进阶优化选项
如果想要更友好的审核体验,可以安装Azure DevOps市场内的第三方SQL审核插件,支持直接在审批页面对比脚本差异、标注风险点,不用额外下载文件查看。
内容的提问来源于stack exchange,提问作者Sturla
相关产品推荐
相关产品推荐

