gpt4 book ai didi

azure-devops - Azure DevOps : How to manage VM agents when multiple projects deploy to the same virtual machine

转载 作者:行者123 更新时间:2023-12-04 13:11:09 24 4
gpt4 key购买 nike

我正在试验多级 Azure 管道,部署到 Windows 虚拟机。由于多阶段管道不支持我使用环境的部署组。尽管向环境添加 VM 资源与向部署组添加目标非常相似,但我注意到命名约定略有不同。
当 PowerShell 脚本运行以创建作为部署组目标的代理时,创建的 Windows 服务名为 vstsagent.{organisation name}.{project name}.{target VM name}。这使得每个项目的 Windows 服务名称都是唯一的。
当 PowerShell 脚本运行以创建作为环境资源的代理时,创建的 Windows 服务默认命名为 vstsagent.{organisation name}..{target VM name}。这意味着默认情况下,同一组织中部署到同一 VM 的所有项目都将为代理使用相同的 Windows 服务名称。
当我已经为项目设置了 VM 代理并且想要将资源添加到同一组织中指向同一 VM 的第二个项目时,我经常会遇到问题。
当 PowerShell 脚本在 VM 上运行以创建第二个代理时,它识别出服务器上已经存在同名服务 vstsagent.{organisation name}..{target VM name},并尝试替换它。这大约有 25% 的时间失败。在这种情况下,我尝试使用 .\config remove 手动删除现有的 Windows 服务。从 PowerShell,然后重新运行第二个代理的 PowerShell 脚本。 PowerShell 脚本似乎可以正常运行,并表示已注册代理。但是,现在如果我尝试在第一个或第二个项目中运行管道,它会失败,说“由于机器离线,无法部署到虚拟机‘{目标虚拟机名称}’。”。所以我最终得到了两个我无法再部署的项目。
将多个项目部署到同一个 VM 一定是比较常见的。在这种情况下,尝试创建第二个代理的 PowerShell 脚本无法替换现有代理,处理这种情况的最佳方法是什么?有没有办法强制脚本只使用现有的代理而不尝试替换它?或者,在将资源添加到环境时,在 Azure DevOps GUI 中,是否有某种方法可以指定我要重用另一个项目中的资源/代理?

最佳答案

我可以重现同样的问题。您可以 report this issue给微软开发团队。
目前,您可以在运行安装脚本之前手动更改代理名称作为解决方法。
代理名称默认设置为 VM 的名称 --agent $env:COMPUTERNAME .您可以更改 dafault 代理名称。例如。 --agent $env:COMPUTERNAME-SecondProject .见下文:
enter image description here .
这将解决服务名称冲突,因为将创建新的服务名称。
enter image description here

关于azure-devops - Azure DevOps : How to manage VM agents when multiple projects deploy to the same virtual machine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65065238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com