可以将来自VSTS的一个私有代理安装在多个VM上吗?

时间:2018-09-25 13:41:58

标签: azure-devops azure-pipelines-build-task azure-devops-self-hosted-agent

我已在VM上安装了代理程序并配置了CI构建管道。管道被触发,并且运行良好。

现在,我想使用相同的构建管道,相同的代理程序,但使用不同的VM。这可能吗?

执行将如何在构建中进行?将源复制到哪个VM?

谢谢。

3 个答案:

答案 0 :(得分:0)

与其他人一样,我也不确定您要做什么,并且还认为不可能在多台计算机上使用同一代理。

但是,如果您必须在VM之间进行切换或轻松选择,则可以为每个VM(用于此特殊情况)设置一个单独的代理队列,该队列中有一个代理。这样,您可以通过代理队列下拉字段在队列时间选择代理池。但这仅在您手动触发时才起作用,而不是在典型的CI场景中。在这种情况下,每次要交换虚拟机时,您都必须编辑定义以强制执行任何特定的虚拟机。

enter image description here

答案 1 :(得分:0)

否。这些专用代理应该具有唯一的名称,并已分配给代理池/队列。如果有工作要做,他们将轮询VSTS / Azure Devops服务器。然后他们执行它。如果您使用相同的私有构建代理克隆计算机,则理论上选择它的代理将执行该工作,但这是理论上的。我真的不知道代理队列如何处理。

这取决于您要做什么。

  1. 如果要分散工作负载(例如2个构建服务器,并让构建转到不忙的构建服务器),则可以创建1个代理程序池/队列。在一个服务器上创建一个私有代理并将其注册到该池,然后在第二台服务器上注销该代理,然后重新注册该代理,将其添加到SAME池中。

  2. 如果要在同一时间在两台服务器上工作(例如同时部署到两台服务器),则可以创建一个“部署组”,并将两台服务器都添加到该服务器中。您将从代理程序池/队列中注销这两个代理程序。从“部署组”中复制PowerShell脚本代码段,然后在每台计算机上运行它。这样,您就可以在发布管道和部署中并行使用此功能,从而减少了部署时间。

答案 2 :(得分:-1)

您可以在管道中设置一个变量,以便您可以在构建时指定虚拟机的名称。

此外,一旦拥有一个或多个代理,就可以将它们添加到应用程序池中。运行构建时,它将从池中选择一个代理并使用它。