如何设置其他默认TFS代理池

时间:2019-06-25 13:39:14

标签: tfs2017

我们在TFS中有多个代理程序池。有没有一种方法可以将默认代理设置为其中一个池? 当前,所有项目版本在创建版本时都具有默认代理。 而不是将默认代理显示为列表中的第一个代理,我们希望将差异代理作为默认代理。可能吗? 感谢任何帮助!

谢谢

1 个答案:

答案 0 :(得分:1)

  

我们希望将diff代理设置为Default,而不是将Default代理显示为列表中的第一个代理。有可能吗?

恐怕没有现成的设置可以设置其他默认代理池。

在Web门户上,我们可以在“构建选项”选项卡中的默认代理队列选项中选择其他默认TFS代理池,并保存

enter image description here

此设置已保存。当您对构建进行排队时,默认的代理池将是您在上面设置的代理:

enter image description here

当您下次将构建排队时,默认代理将是您之前设置的代理。

另一方面,我们可以添加一个与特定代理匹配的需求,例如:

Agent.Name -equals AgentNameHere

enter image description here

然后使用REST API构建队列并指定需求:

Param(
   [string]$collectionurl = "http://server:8080/tfs/DefaultCollection/",
   [string]$projectName = "0323ScrumTFVC",
   [string]$keepForever = "true",
   [string]$BuildDefinitionId = "1",
   [string]$user = "username",
   [string]$token = "password"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

function CreateJsonBody
{

    $value = @"
  {
  "definition": {
    "id": $BuildDefinitionId
  },

  "sourceBranch": "$/0323ScrumTFVC",
  "demands":["Agent.Name -equals AgentNameHere"]
 }           

}
"@

 return $value
}

$json = CreateJsonBody

$uri = "$($collectionurl)/$($projectName)/_apis/build/builds?api-version=2.0"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

这里的机票:Specifying agent at queue build time with TFS 2015

但是此方法不适用于UI

检查文档Predefined variablesDemands