如何在单个代理程序池下的所有代理程序上运行Powershell脚本

时间:2018-07-17 12:01:19

标签: powershell tfs msbuild continuous-integration azure-pipelines-release-pipeline

我在Visual Studio Test Version 2中设置了发行版定义。

我已经创建了一个Agent阶段,然后创建了Visual Studio Test v2任务以并行执行测试运行。

问题:我想在同一Agent阶段执行VISUAL STUDIO TEST V2 TASK之前,在Agent池中的所有Build Agent(十台机器)上运行Power Shell脚本。有什么方法可以做到这一点或其他解决方法?

3 个答案:

答案 0 :(得分:1)

您是否尝试过部署组?

我通常需要在代理计算机上一次又一次地运行一些安装脚本,并且我已经意识到实现此目标的最佳方法是通过部署组。当根据代理程序池配置计算机时,还应根据自定义部署池设置部署代理程序。因此,同一台计算机上正在运行一个代理和一个部署代理进程。

一旦所有计算机都列在部署池中,我要做的就是创建一个具有部署组阶段的新发行版,添加脚本并运行发行版。然后,脚本将在所有参与者计算机上执行。

enter image description here

https://docs.microsoft.com/en-us/vsts/pipelines/release/deployment-groups/?view=vsts

答案 1 :(得分:0)

对我来说,唯一可行的方法是为需要运行脚本的每个代理创建一个代理阶段,并使用Agent.Name等于yourAgentName设置需求。 这样一来,您就可以确保所有特工都可以锁定目标。

答案 2 :(得分:0)

如果您只想为每个代理计算机分别在VS Test任务之前运行PowerShell任务,则可以在同一代理阶段中添加两个任务,并设置代理阶段为:

enter image description here

然后任务执行顺序为:

agent 1 - PowerShell task
agent 1 - VS Test task
agent 2 - PowerShell task
agent 2 - VS Test task
...
agent 10 - PowerShell task
agent 10 - VS Test task

如果要先在每台代理计算机上执行PowerShell任务,然后在每台代理计算机上执行VS Test任务,则应在两个代理阶段中添加这两个任务 >,并将两个代理阶段都设置为:

enter image description here

然后任务执行顺序为:

agent 1 - PowerShell task
agent 2 - PowerShell task
...
agent 10 - PowerShell task
agent 1 - VS Test task
agent 2 - VS Test task
...
agent 10 - VS Test task