在服务器上安装多个 Azure DevOps 环境代理

Mat*_*rdt 10 azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-yaml

我们有一个开发服务器托管来自多个 Azure DevOps 项目的 Web 服务。为了使用 yaml 部署管道,我们从部署池迁移到环境/资源。与部署池不同,项目之间不能共享环境和资源您可以在这里投票来改变这一点。

我们按如下方式解决这个问题。

  1. 为每个项目创建一个环境。
  2. 对于每个环境,将开发服务器添加为资源。
  3. 在服务器上为每个项目安装一个环境代理。

不幸的是,如果服务器上已经安装了环境代理,这会产生命名冲突。

The service already exists: vstsagent.MyDevOpsAccount..MyServer, it will be replaced
Error: Operation CreateService failed with return code 1072
Run Code Online (Sandbox Code Playgroud)

Mat*_*rdt 9

TLDR:在 powershell 安装脚本中,更改--agent $env:COMPUTERNAME--agent "$env:COMPUTERNAME-MyProject"

原因似乎是代理的Windows服务名称确定如下

serviceName = StringUtil.Format(serviceNamePattern, accountName, settings.PoolName, settings.AgentName);
Run Code Online (Sandbox Code Playgroud)

它使用 Azure DevOps 组织名称、部署池名称和代理名称。由于组织名称是固定的,并且部署池名称对于环境代理不可用,因此代理名称似乎是唯一的机会。