TFS 2015 API remove agent from pool with PowerShell

后端 未结 2 1134
孤独总比滥情好
孤独总比滥情好 2021-01-22 05:17

I\'m working on removing an agent from a pool temporarily, install new software on the buildserver the agent is on, test that it works, and then add the agent to the pool again.

相关标签:
2条回答
  • 2021-01-22 05:38

    REST API of the agent pool and agent:

    Get agent pools (request method: GET):

    http://[TFS URL]/_apis/distributedtask/pools?api-version=2.3-preview.1
    

    Get agents of an agent pool (Request method: GET):

    http://[TFS URL]/_apis/distributedtask/pools/[pool id]/agents?api-version=2.3-preview.1
    

    Disable/enable build agent (Request method: PATCH)

    http://[TFS URL]/_apis/distributedtask/pools/[pool id]/agents/[agent id]?api-version=2.3-preview.1
    

    Body (Content-Type: application/json)

    {
        "enabled": false,
        "id": [agent id],
        "maxParallelism": 1
    }
    

    Delete an agent from an agent pool (request method: DELETE):

    http://[Tfs URL]/_apis/distributedtask/pools/[pool id]/agents/[agent id]?api-version=2.3-preview.1
    

    Simple sample to call REST API (PowerShell):

    Param(
       [string]$vstsAccount = "<VSTS-ACCOUNT-NAME>",
       [string]$projectName = "<PROJECT-NAME>",
       [string]$buildNumber = "<BUILD-NUMBER>",
       [string]$keepForever = "true",
       [string]$user = "",
       [string]$token = "<PERSONAL-ACCESS-TOKEN>"
    )
    
    # Base64-encodes the Personal Access Token (PAT) appropriately
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
    
    $uri = "https://$($vstsAccount).visualstudio.com/DefaultCollection/$($projectName)/_apis/build/builds?api-version=2.0&buildNumber=$($buildNumber)"
    $result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
    

    For details: Calling VSTS APIs with PowerShell

    C# code to call REST API:

    String MyURI = "REST API URL";
    WebRequest WReq = WebRequest.Create(MyURI);
    WReq.Credentials =
        new NetworkCredential("[user name]", "[password]", "[domain]");
    
    WebResponse response = WReq.GetResponse();
    Console.WriteLine(((HttpWebResponse)response).StatusDescription);
    Stream dataStream = response.GetResponseStream();
    
    StreamReader reader = new StreamReader(dataStream);
    
    string responseFromServer = reader.ReadToEnd();
    
    Console.WriteLine(responseFromServer);
    

    On the other hand, you need to restart the build agent after you install new software to the agent machine in order to recognize them.

    0 讨论(0)
  • 2021-01-22 05:44

    There is no such API to create or remove an agent from the agent pool. And it's not needed to write your own script. When you download the agent, you just need to run a command prompt as Administrator, and then run ConfigureAgent.cmd on your build agent machine:

    C:\Agent\ConfigureAgent.cmd
    

    Then respond to the prompts. Check Deploy an agent on Windows for TFS 2015

    0 讨论(0)
提交回复
热议问题