使用 Azure DevOps 共享部署组,Web 应用程序正在被覆盖,如何最好地调试它?
With an Azure DevOps shared deployment group, web apps are being overwritten, how can one best debug this?
背景
我安装了 on-prem TFS (Azure DevOps) server (version 2018.2) with a single deployment agent。
此代理位于 shared deployment group 中,用于部署多个 IIS Web 应用程序,每个应用程序驻留在自己的项目和发布管道中。
发布管道都使用相同的流程,运行 IIS Web App Deployment 模块部署每个应用程序。
在 deployment parameters 中,每个应用程序都有自己的、唯一的 virtual application
指定。
问题
部署一个应用程序时,它会正确部署到其唯一的虚拟应用程序,但是代理配置为部署的所有其他虚拟应用程序甚至在其他发布管道 被一个应用程序覆盖。
我试过的
- 已验证每个
virtual application
参数在配置中实际上是唯一的
- 已验证任何给定部署的发布部署日志均未提及任何额外 部署路径。这特别令人困惑,因为日志 说 该操作正确部署到 只有一个 虚拟应用程序。
- 检查目标服务器上是否有任何奇怪的 IIS 日志
问题
调试此类 Azure DevOps 问题的最佳后续步骤是什么?这是一个 on-prem 服务器,所以我拥有比云托管更高级别的访问权限。
我在想也许:
- 检查代理版本并更新到最新版本?
- 会不会有 其他 有价值信息的日志?在目标服务器上?在 DevOps 服务器上?
我解决了这个问题。请参阅下面的 written-up 过程。
解决方案
问题不在于部署模块,而是我在每个部署模块之前 mis-configured IIS management module 和 运行。每个管理模块都为每个虚拟应用程序设置了相同的 physical path
参数值,这导致每次部署都会覆盖之前的任何部署。
调试过程
在 github 上写了一个相应的问题时,具有讽刺意味的是,有一个 link to instructions for troubleshooting AzureDevops,所以我开始关注那个文档。
- 我 turned on verbose logging on the deployment agent 通过将
system.debug
变量添加到发布管道并将其设置为 true
。
- 由此我可以看出,实际上没有其他虚拟应用程序被部署到
- 我在标题为
_diag
的目录中的代理安装目录下检查了目标服务器上的其他代理日志。
- 这表明一切正常
- 还是不服气,I looked at the source code发现模块做的都是运行MsDeploy。
- 这让我想知道是否所有的部署都去同一个物理位置
- 然后我查看了 IIS management module 的配置,发现我为每个虚拟应用程序设置了相同的物理路径。
- 我通过为每个应用程序设置不同的物理路径来测试假设,是的,应用程序不再相互覆盖!
背景
我安装了 on-prem TFS (Azure DevOps) server (version 2018.2) with a single deployment agent。
此代理位于 shared deployment group 中,用于部署多个 IIS Web 应用程序,每个应用程序驻留在自己的项目和发布管道中。
发布管道都使用相同的流程,运行 IIS Web App Deployment 模块部署每个应用程序。
在 deployment parameters 中,每个应用程序都有自己的、唯一的 virtual application
指定。
问题
部署一个应用程序时,它会正确部署到其唯一的虚拟应用程序,但是代理配置为部署的所有其他虚拟应用程序甚至在其他发布管道 被一个应用程序覆盖。
我试过的
- 已验证每个
virtual application
参数在配置中实际上是唯一的 - 已验证任何给定部署的发布部署日志均未提及任何额外 部署路径。这特别令人困惑,因为日志 说 该操作正确部署到 只有一个 虚拟应用程序。
- 检查目标服务器上是否有任何奇怪的 IIS 日志
问题
调试此类 Azure DevOps 问题的最佳后续步骤是什么?这是一个 on-prem 服务器,所以我拥有比云托管更高级别的访问权限。
我在想也许:
- 检查代理版本并更新到最新版本?
- 会不会有 其他 有价值信息的日志?在目标服务器上?在 DevOps 服务器上?
我解决了这个问题。请参阅下面的 written-up 过程。
解决方案
问题不在于部署模块,而是我在每个部署模块之前 mis-configured IIS management module 和 运行。每个管理模块都为每个虚拟应用程序设置了相同的 physical path
参数值,这导致每次部署都会覆盖之前的任何部署。
调试过程
在 github 上写了一个相应的问题时,具有讽刺意味的是,有一个 link to instructions for troubleshooting AzureDevops,所以我开始关注那个文档。
- 我 turned on verbose logging on the deployment agent 通过将
system.debug
变量添加到发布管道并将其设置为true
。- 由此我可以看出,实际上没有其他虚拟应用程序被部署到
- 我在标题为
_diag
的目录中的代理安装目录下检查了目标服务器上的其他代理日志。- 这表明一切正常
- 还是不服气,I looked at the source code发现模块做的都是运行MsDeploy。
- 这让我想知道是否所有的部署都去同一个物理位置
- 然后我查看了 IIS management module 的配置,发现我为每个虚拟应用程序设置了相同的物理路径。
- 我通过为每个应用程序设置不同的物理路径来测试假设,是的,应用程序不再相互覆盖!