Azure devops 批量更新Azure Devops管道

Azure devops 批量更新Azure Devops管道,azure-devops,continuous-integration,azure-pipelines,Azure Devops,Continuous Integration,Azure Pipelines,是否有办法将Azure DevOps中的管道批量更新到我刚刚创建的新代理池?您可以使用REST API迭代所有构建定义并更新池 Powershell是你的朋友 function GetVSTSCredential () { Param( $userEmail, $Token ) $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((&quo

是否有办法将Azure DevOps中的管道批量更新到我刚刚创建的新代理池?

您可以使用REST API迭代所有构建定义并更新池

Powershell是你的朋友

function GetVSTSCredential () {
    Param(
        $userEmail,
        $Token
    )

    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $userEmail, $token)))
    return @{Authorization = ("Basic {0}" -f $base64AuthInfo)}
}

function Get-Projects() {
    Param(
        [Parameter(Mandatory = $true)] $userParams
    )

    try {
        
        # Base64-encodes the Personal Access Token (PAT) appropriately
        $authorization = GetVSTSCredential -Token $userParams.PAT -userEmail $userParams.userEmail

        # GET 

        $Uri = "https://dev.azure.com/" + $userParams.VSTSAccount + "/_apis/projects" 
        $result = Invoke-RestMethod -Uri $Uri -Method Get -Headers $authorization -ContentType "application/json"
        return $result.value
    }
    catch {
        $ErrorMessage = $_.Exception.Message
        $FailedItem = $_.ErrorDetails.Message
        Write-Host ( "Error : " + $ErrorMessage + " Item : " + $FailedItem) -ForegroundColor Red
    }
}

function Get-Queues() {
    Param(
        [Parameter(Mandatory = $true)] $userParams,
        [Parameter(Mandatory = $true)] $project

    )

    try {
        
        # Base64-encodes the Personal Access Token (PAT) appropriately
        $authorization = GetVSTSCredential -Token $userParams.PAT -userEmail $userParams.userEmail

        # GET https://$account.visualstudio.com/$_/_apis/distributedtask/queue

        $Uri = "https://dev.azure.com/" + $userParams.VSTSAccount + "/" + $project + "/_apis/distributedtask/queues?api-version=3.2-preview" 
        $result = Invoke-RestMethod -Uri $Uri -Method Get -Headers $authorization -ContentType "application/json"
        return $result.value
    }
    catch {
        $ErrorMessage = $_.Exception.Message
        $FailedItem = $_.ErrorDetails.Message
        Write-Host ( "Error : " + $ErrorMessage + " Item : " + $FailedItem) -ForegroundColor Red
    }
}


function Get-Builds() {
    Param(
        [Parameter(Mandatory = $true)] $userParams,
        [Parameter(Mandatory = $true)] $project

    )

    try {
        
        # Base64-encodes the Personal Access Token (PAT) appropriately
        $authorization = GetVSTSCredential -Token $userParams.PAT -userEmail $userParams.userEmail

        # GET https://$account.visualstudio.com/$_/_apis/build/definitions

        $Uri = "https://dev.azure.com/" + $userParams.VSTSAccount + "/" + $project + "/_apis/build/definitions?api-version=4.1-preview.6"
        $result = Invoke-RestMethod -Uri $Uri -Method Get -Headers $authorization -ContentType "application/json"
        return $result.value
    }
    catch {
        $ErrorMessage = $_.Exception.Message
        $FailedItem = $_.ErrorDetails.Message
        Write-Host ( "Error : " + $ErrorMessage + " Item : " + $FailedItem) -ForegroundColor Red
    }
}

function Get-Build() {
    Param(
        [Parameter(Mandatory = $true)] $userParams,
        [Parameter(Mandatory = $true)] $buildUri
    )

    try {
        
        # Base64-encodes the Personal Access Token (PAT) appropriately
        $authorization = GetVSTSCredential -Token $userParams.PAT -userEmail $userParams.userEmail

        # GET build
        $Uri = $buildUri + "?api-version=4.1-preview.6"
        $result = Invoke-RestMethod -Uri $Uri -Method Get -Headers $authorization -ContentType "application/json"
        return $result
    }
    catch {
        $ErrorMessage = $_.Exception.Message
        $FailedItem = $_.ErrorDetails.Message
        Write-Host ( "Error : " + $ErrorMessage + " Item : " + $FailedItem) -ForegroundColor Red
    }
}


function Update-Build() {
    Param(
        [Parameter(Mandatory = $true)] $userParams,
        [Parameter(Mandatory = $true)] $build
    )

    try {
        
        # Base64-encodes the Personal Access Token (PAT) appropriately
        $authorization = GetVSTSCredential -Token $userParams.PAT -userEmail $userParams.userEmail

        $json = $build | ConvertTo-Json -Depth 100 -Compress
        $json = [Text.Encoding]::UTF8.GetBytes($json)

        # PUT build
        $Uri = $build.url 

        $headers = $authorization
        $headers.Add("Accept", "api-version=4.1-preview.6")

        $result = Invoke-RestMethod -Uri $Uri -Method Put -Body $json -ContentType "application/json" -Headers $headers 
         
    }
    catch {
        $ErrorMessage = $_.Exception.Message
        $FailedItem = $_.ErrorDetails.Message
        Write-Host ( "Error : " + $ErrorMessage + " Item : " + $FailedItem) -ForegroundColor Red
        Write-Host $json
        Write-Host $Uri
    }
}

这里也有类似的例子:@CeceDong MSFT谢谢!由于@jessehouwing提供了正确的解决方案,您可以,这对阅读此帖子的其他社区成员是有益的。@CeceDong MSFT感谢您的提醒