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

Continuous integration 根据项目代码更改有选择地运行发布任务,continuous-integration,azure-devops,continuous-deployment,azure-pipelines-release-pipeline,winrm,Continuous Integration,Azure Devops,Continuous Deployment,Azure Pipelines Release Pipeline,Winrm,我们使用VST进行构建和发布管理,并使用CI/CD。通常,我们的解决方案包括一个web应用程序项目和一个数据库项目 我们当前的发布任务使应用程序离线(使用app_offline.htm),发布数据库,然后发布web应用程序。发布数据库项目通常不会导致任何更改,因为由于CI/CD,我们在web应用程序上更新代码的频率要比更改db模式的频率高很多 在我们的git存储库中,当检测到数据库项目代码发生更改时,是否有办法只运行数据库发布任务(使用WinRM) 编辑:这本身不是问题,因为通常在发布DACPA

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

我们当前的发布任务使应用程序离线(使用app_offline.htm),发布数据库,然后发布web应用程序。发布数据库项目通常不会导致任何更改,因为由于CI/CD,我们在web应用程序上更新代码的频率要比更改db模式的频率高很多

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


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

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

  • 创建新的生成定义
  • 在触发器选项卡中启用连续集成
  • 指定包含数据库项目的路径筛选器
  • 修改Visual Studio生成任务,在MSBuild Arguments框中指定
    /t:[数据库项目名称]
    参数,以仅生成数据库项目
  • web项目的步骤相同
  • 创建新的相关定义
  • 为前两个构建定义添加构件并启用连续部署触发器
  • 添加两个环境(例如数据库、web)
  • 打开环境的预部署条件(例如数据库)
  • 启用工件过滤器并选择相应的工件(例如数据库构建工件),指定构建分支(可以指定
    *
    ,它表示所有分支)
  • 添加任务以仅在此环境中部署数据库
  • 对于web环境,执行相同的步骤

  • 答案是-我想要的完全不可能。

    这很好。。除了发布时,我在web应用程序上应用了一个很好的“应用程序脱机”文件,以便用户知道正在进行更改。如果同时对项目和提交进行更改,则构建和发布都将启动,但我无法假设在部署web项目时删除“app offline”文件是安全的,因为db项目可能仍在部署中。还有其他方法吗?@benpage加载项数据库环境在部署数据库之前停止应用程序服务,并在部署后重新启动。我没有使用Azure应用程序。我正在使用windows服务器。用于停止网站。好的,我认为有一些误解。我不想停止这个网站。我想显示app_offline.htm文件。我能做到。然而,不管我怎么做,问题仍然存在,如果我使用的是两个同时运行的版本,那么无法确定这两个版本何时完成。是否有一个解决方案,我可以只使用一个版本,并过滤我的发布任务或其他什么?