运行 根据项目代码变更有选择地发布任务
run release tasks selectively based on project code changes
我们使用 VSTS 进行构建和发布管理,并使用 CI/CD。通常,我们的解决方案包括一个 Web 应用程序项目和一个数据库项目。
我们当前的发布任务使应用程序脱机(使用 app_offline.htm),发布数据库,然后发布 Web 应用程序。发布数据库项目通常不会导致任何更改,因为 CI/CD 我们在 Web 应用程序上更新代码比更改数据库模式更频繁。
有没有办法在我们的 git 存储库中检测到数据库项目代码发生变化时仅 运行 数据库发布任务(使用 WinRM)?
编辑: 这本身不是问题,因为通常在 DACPAC 发布时,不会有 activity。但是,我一直在请求使用 /p:BackupDatabaseBeforeChanges=true 标志备份数据库 - 即使没有更改,这似乎也备份了数据库。这是大型数据库的问题。
简单的方法是,您可以将 Web 项目和数据库项目分离为两个构建定义。
- 创建新的构建定义
- 在触发器选项卡中启用持续集成
- 指定路径过滤器以包含数据库项目
- 修改Visual Studio构建任务,在MSBuild Arguments框中指定
/t:[database project name]
参数以仅构建数据库项目
- Web 项目步骤相同
- 创建新的相关定义
- 为前两个构建定义添加工件并启用持续部署触发器
- 添加两个环境(例如数据库、网络)
- 打开环境(例如数据库)的预部署条件
- 启用Artifact filters和select对应的artifact(例如数据库build artifact),指定build branch(可以指定
*
,表示所有branches)
- 添加任务以仅在此环境中部署数据库
- 网络环境步骤相同
答案是——我想要的完全不可能。
我们使用 VSTS 进行构建和发布管理,并使用 CI/CD。通常,我们的解决方案包括一个 Web 应用程序项目和一个数据库项目。
我们当前的发布任务使应用程序脱机(使用 app_offline.htm),发布数据库,然后发布 Web 应用程序。发布数据库项目通常不会导致任何更改,因为 CI/CD 我们在 Web 应用程序上更新代码比更改数据库模式更频繁。
有没有办法在我们的 git 存储库中检测到数据库项目代码发生变化时仅 运行 数据库发布任务(使用 WinRM)?
编辑: 这本身不是问题,因为通常在 DACPAC 发布时,不会有 activity。但是,我一直在请求使用 /p:BackupDatabaseBeforeChanges=true 标志备份数据库 - 即使没有更改,这似乎也备份了数据库。这是大型数据库的问题。
简单的方法是,您可以将 Web 项目和数据库项目分离为两个构建定义。
- 创建新的构建定义
- 在触发器选项卡中启用持续集成
- 指定路径过滤器以包含数据库项目
- 修改Visual Studio构建任务,在MSBuild Arguments框中指定
/t:[database project name]
参数以仅构建数据库项目 - Web 项目步骤相同
- 创建新的相关定义
- 为前两个构建定义添加工件并启用持续部署触发器
- 添加两个环境(例如数据库、网络)
- 打开环境(例如数据库)的预部署条件
- 启用Artifact filters和select对应的artifact(例如数据库build artifact),指定build branch(可以指定
*
,表示所有branches) - 添加任务以仅在此环境中部署数据库
- 网络环境步骤相同
答案是——我想要的完全不可能。