Migration 我可以批量更新VST生成管道定义吗?

Migration 我可以批量更新VST生成管道定义吗?,migration,azure-devops,azure-pipelines,Migration,Azure Devops,Azure Pipelines,我正在从本地TFS实例迁移到VST。我有很多构建管道(vNext构建定义)被迁移到VST,但现在我必须更新它们以使用特定的代理 UI和命令行客户端中都没有可用的选项 我是否缺少一个可以一次全部更新的选项?基于我对Manuel所做的迁移工作(参考Jesse的文章),我提供了一些脚本来获取TFS队列,然后使用它们更新VSTS构建定义 Read-QueuesFromTfs.ps1 Repair-BuildDefinitions.ps1 这两个脚本都需要参数personaldaccestoken-一

我正在从本地TFS实例迁移到VST。我有很多构建管道(vNext构建定义)被迁移到VST,但现在我必须更新它们以使用特定的代理

UI和命令行客户端中都没有可用的选项


我是否缺少一个可以一次全部更新的选项?

基于我对Manuel所做的迁移工作(参考Jesse的文章),我提供了一些脚本来获取TFS队列,然后使用它们更新VSTS构建定义

  • Read-QueuesFromTfs.ps1
  • Repair-BuildDefinitions.ps1
这两个脚本都需要参数personaldaccestoken-一个是针对目标VSTS帐户的PAT,另一个是针对TFS环境的PAT

第一个脚本帮助您获得一个包含所有TFS队列的queues.json文件。第二个脚本迭代要更新生成定义的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
    }
}
在这个文件中描述


查看存储库中的Builds文件夹

我已经ping了Manuel以使脚本生效。不确定为什么这会被搁置。除非您知道RESTAPI的可用性,否则没有用户可以找到的简单方法来修复CI/CD管道。这是一个非常有效的问题。我觉得这个问题已经被不了解VST的人解决了。在没有对新的行为准则作出进一步解释/评论的情况下关闭了该公司,这一事实也并非如此@迈克·迪尔的名字只差6分,稍微行个屈膝礼就好了。感谢主持人做了正确的事情。欢迎@Mike Diehl。不要让这种经历吓跑你,让你远离堆栈溢出。有很多人想要帮助你。只要确保你解释了你已经尝试过的内容,以及你已经搜索过的文档。在这种情况下,很难找到解决方案。感谢版主做了正确的事情。欢迎@jasper。不要让这种经历吓跑你,让你远离堆栈溢出。有很多人想要帮助你。回答时,请确保在链接到外部源时包含相关代码段。尤其是当链接与内容的比率不好时,“年轻”用户将自动被标记。