[英]Bulk update Azure Devops Pipelines
有沒有辦法批量更新 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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.