我们使用VSTS进行构建和发布管理,并使用CI/CD。通常,我们的解决方案包括一个web应用程序项目和一个数据库项目。
我们当前的发布任务使应用程序离线(使用app_offline.htm),发布数据库,然后发布web应用程序。发布数据库项目通常不会导致任何更改,因为由于CI/CD,我们在web应用程序上更新代码的频率远高于更改数据库架构。
有没有一种方法可以只在检测到git存储库中数据库项目代码发生更改时运行数据库发布任务(使用WinRM)?
编辑:这本身不是问题,因为通常当DACPAC发布时,不会有任何活动。但是,我一直请求使用/p:BackupDatabaseBeforeChanges=true标志备份数据库,即使没有更改,该标志似乎也会备份数据库。这是大型数据库的问题。
简单的方法是可以将web项目和数据库项目分离为两个构建定义。
- 创建新的构建定义
- 在触发器选项卡中启用连续集成
- 指定包含数据库项目的路径筛选器
- 修改Visual Studio生成任务,在MSBuild Arguments框中指定
/t:[database project name]
参数以仅生成数据库项目 - web项目的相同步骤
- 创建新的相关定义
- 为前两个构建定义添加工件,并启用连续部署触发器
- 添加两个环境(例如数据库、web)
- 打开环境(例如数据库)的预部署条件
- 启用工件过滤器并选择相应的工件(例如数据库构建工件),指定构建分支(可以指定
*
,表示所有分支) - 添加任务以仅在此环境中部署数据库
- web环境的相同步骤
答案是-我想要的是不可能的。