【问题标题】:With an Azure DevOps shared deployment group, web apps are being overwritten, how can one best debug this?使用 Azure DevOps 共享部署组,Web 应用程序正在被覆盖,如何才能最好地调试呢?
【发布时间】:2020-07-27 11:56:23
【问题描述】:

背景

我有一个 on-prem TFS (Azure DevOps) server (version 2018.2) 并安装了一个 deployment agent

此代理位于shared deployment group 中,用于部署多个 IIS Web 应用程序,每个应用程序驻留在自己的项目和发布管道中。

发布管道都使用相同的流程,运行IIS Web App Deployment 模块来部署每个应用程序。

deployment parameters 中,每个应用程序都有自己的、唯一的virtual application 指定。

问题

部署一个应用程序时,它会正确部署到其唯一的虚拟应用程序,但是代理配置为部署的所有其他虚拟应用程序即使在其他发布管道中被一个应用程序覆盖。

我尝试过的

  1. 已验证每个 virtual application 参数实际上在配置中是唯一的
  2. 已验证任何给定部署的发布部署日志均未提及任何额外部署路径。这尤其令人困惑,因为日志操作正确地部署到只有一个虚拟应用程序。
  3. 检查目标服务器上是否有任何奇怪的 IIS 日志

问题

调试此类 Azure DevOps 问题的最佳后续步骤是什么?这是一个 on-prem 服务器,因此我拥有比云托管更高级别的访问权限。

我在想也许:

  1. 检查代理版本并将其更新到最新?
  2. 是否有other 包含有价值信息的日志?在目标服务器上?在 DevOps 服务器上?

【问题讨论】:

  • 您是否在将system.debug 变量设置为true 的情况下运行了部署?
  • @DanielMann,我做到了,结果相同。日志没有提到额外的部署路径,只列出了一个虚拟应用程序。
  • @David 你能分享你的构建定义吗?
  • 感谢@CeceDong-MSFT。我在Azure DevOps troubleshooting document 的帮助下解决了这个问题。我将发布我的过程作为答案。

标签: tfs azure-devops azure-pipelines azure-devops-self-hosted-agent azure-devops-server


【解决方案1】:

我解决了这个问题。请参阅下面的书面过程。

解决方案

问题不在于部署模块,而是我错误地配置了在每个部署模块之前运行的IIS management module。每个管理模块都为每个虚拟应用程序设置了相同的physical path 参数值,这导致每次部署都会覆盖之前的部署。

调试过程

在 github 上为此写一个相应的 issue 时,讽刺的是,有一个 link to instructions for troubleshooting AzureDevops,所以我开始关注该文档。

  1. 我通过将system.debug 变量添加到发布管道并将其设置为trueturned on verbose logging on the deployment agent
    • 从这里我可以看出,实际上没有其他虚拟应用程序被部署到
  2. 我检查了目标服务器上代理安装目录下名为_diag 的目录下的附加代理日志。
    • 这表明一切正常
  3. 仍然不服气,I looked at the source code 发现所有模块都在运行 MsDeploy。
    • 这让我想知道是否所有部署都将转到同一个物理位置
  4. 然后我查看了IIS management module 的配置,发现我为每个虚拟应用程序设置了相同的物理路径。
  5. 我通过为每个应用程序设置不同的物理路径来测试假设,并且,是的,应用程序不再相互覆盖!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 2011-03-17
    • 1970-01-01
    • 2019-07-02
    • 2021-04-23
    • 2020-01-25
    相关资源
    最近更新 更多