根据项目代码更改有选择地运行发布任务

时间:2017-11-16 22:45:14

标签: continuous-integration azure-devops continuous-deployment azure-pipelines-release-pipeline winrm

我们正在使用VSTS进行构建和发布管理,并使用CI / CD。通常,我们的解决方案包括Web应用程序项目和数据库项目。

我们当前的发布任务使应用程序脱机(使用app_offline.htm),发布数据库,然后发布Web应用程序。发布数据库项目通常不会导致任何更改,因为CI / CD会更新Web应用程序上的代码而不是更改数据库模式。

有没有办法在我们的git存储库中检测到数据库项目代码发生变化时,只运行数据库发布任务(使用WinRM)?

编辑:这本身并不是问题,因为通常在发布DACPAC时,就没有活动。但是,我一直在请求使用 / p:BackupDatabaseBeforeChanges = true 标志备份数据库 - 即使没有更改,它似乎也会备份数据库。这是大型数据库的问题。

2 个答案:

答案 0 :(得分:1)

简单的方法是,您可以将Web项目和数据库项目分成两个构建定义。

  1. 创建新的构建定义
  2. 在“触发器”标签中启用持续集成
  3. 指定包含数据库项目的路径过滤器
  4. 修改Visual Studio Build任务,在 MSBuild Arguments 框中指定/t:[database project name]参数以仅构建数据库项目
  5. 与web项目相同的步骤
  6. 创建新的相关定义
  7. 为前两个构建定义添加工件并启用持续部署触发器
  8. 添加两个环境(例如数据库,网络)
  9. 打开环境的预部署条件(例如数据库)
  10. 启用工件过滤器并选择相应的工件(例如数据库构建工件),指定构建分支(可以指定*,它表示所有分支)
  11. 添加任务以在此环境中部署数据库
  12. 与网络环境相同的步骤

答案 1 :(得分:0)

答案是 - 正是我想要的是不可能的。