Я сейчас перехожу с локального экземпляра TFS на VSTS. У меня есть много конвейеров сборки (определений сборки vNext), которые были перенесены в VSTS, но теперь мне нужно обновить их все, чтобы использовать определенный агент.
Нет опции, доступной в пользовательском интерфейсе или в клиенте командной строки.
Мне не хватает доступной мне опции, чтобы я мог обновить их все сразу?
Основываясь на работе по миграции, которую я проделал с Мануэлем (упоминается в сообщении, о котором упоминает Джесси), я сделал несколько доступных сценариев, которые получают очереди TFS, а затем используют их для обновления определений сборки VSTS.
Для обоих сценариев требуются параметры PersonalAccesToken: один - PAT для целевой учетной записи VSTS, а второй - для среды TFS.
Первый скрипт поможет вам получить файл queues.json, содержащий все очереди TFS. Второй сценарий выполняет итерацию проектов VSTS, на которые вы нацеливаетесь для обновления определений сборки. Скрипты не требуют пояснений.
# Get all queues and based on previous names get the id's
(Invoke-RestMethod `
-Uri "https://$account.visualstudio.com/$_/_apis/distributedtask/queues" `
-Headers @{Authorization = "Basic $auth"; Accept = "application/json; api-version=3.2-preview" } `
-Method Get `
-ContentType "application/json" -Verbose).value | % { $vstsqueues[$_.name] = $_.id }
# get all the builds
$builds = (Invoke-RestMethod `
-Uri "https://$account.visualstudio.com/$_/_apis/build/definitions" `
-Headers @{Authorization = "Basic $auth"; Accept = "application/json; api-version=4.1-preview.6" } `
-Method Get `
-ContentType "application/json").value
# get the full build definition
$build = Invoke-RestMethod `
-Uri $_.url `
-Headers @{Authorization = "Basic $auth"; Accept = "application/json; api-version=4.1-preview.6" } `
-Method Get `
-ContentType "application/json"
# get queue
$queuename = $tfsqueues[$_.queue.id]
Write-Output " queue name: $queuename"
# update build
$build.queue = @{ id = $vstsqueues[$queuename] }
# post changes
Invoke-RestMethod `
-Uri $_.url `
-Headers @{Authorization = "Basic $auth"; Accept = "application/json; api-version=4.1-preview.6" } `
-Method Put `
-ContentType "application/json" `
-Body ($build | ConvertTo-Json -Depth 100 -Compress) | Out-Null
}
}
Описано в этом файле. https://github.com/JasperGilhuis/VSTS-RestAPI/blob/master/README.md#update-vsts-build-definitions-based-on-tfs-queues
Посмотрите, что папка Builds в репозитории https://github.com/JasperGilhuis/VSTS-RestAPI/tree/master/Builds