Azure Pipeline发布阶段执行命令触发SQL数据库更新的实现方法
实现方案
完全可以在发布阶段配置脚本执行该数据库更新命令,具体操作步骤如下:
前提确认
- 确认发布管线使用的运行代理(Agent)已开通对应环境SQL数据库的访问权限,防火墙白名单、网络策略配置完成,可正常连接数据库
- 确认构建阶段已将
<项目名>.Blazor.Server.exe及依赖的运行时文件、配置文件全部作为构建产物归档,发布阶段可正常读取对应文件
发布阶段配置步骤
- 在沙箱、生产两套独立的发布阶段中,于「Web App部署、连接字符串注入」步骤之后,新增一个PowerShell/命令行脚本任务,保证脚本运行时读取的是当前环境的有效连接字符串
- 脚本内容替换为以下命令,不要使用写死的本地路径,改用Azure DevOps预定义变量适配代理的实际工作目录:
$(System.DefaultWorkingDirectory)/<构建产物别名>/<项目名>.Blazor.Server/bin/Release/net5.0/<项目名>.Blazor.Server.exe -updateDatabase -silent -forceUpdate
- 配套配置:
- 提前将当前环境的数据库连接字符串注入到exe对应的配置文件(
appsettings.json/appsettings.<环境名>.json)中,避免串库 - 若运行时报.NET 5运行时缺失错误,可提前在代理安装.NET 5运行环境,或在构建阶段将Blazor项目设置为自包含部署模式打包
- 验证流程:先在沙箱环境测试,可暂时去掉
-silent参数查看完整执行日志,确认更新无报错后再配置到生产环境
注意事项
- 替换命令中的
<项目名>``<构建产物别名>占位符时注意拼写,避免找不到对应文件 - 建议给生产环境的数据库更新步骤增加手动审核节点,执行前确认数据库已完成备份,避免更新错误损坏生产数据
- 可在脚本中增加执行结果校验逻辑,若更新失败直接中断发布流程,避免出现代码与数据库版本不匹配的问题
内容的提问来源于stack exchange,提问作者CB1216
相关产品推荐
相关产品推荐

