使用 Azure DevOps 经典构建管道和 TFVC 管理分支

Managing branches with Azure DevOps Classic Build Pipelines and TFVC

在使用 Azure DevOps Classic Build Pipelines 和 TFVC 时,您如何管理分支的构建?

我认为唯一可行的选择是使用新名称复制构建管道并更新源代码映射以指向新的 TFVC 分支。

我看到 ADO 网站 UI 提供了克隆单个构建定义的选项,但由于我有超过 200 多个构建管道要在我分支时克隆,是否有更有效的方法来执行此操作?或者是编写自定义工具以利用 ADO REST 的唯一选择 Api?

由于您需要批量克隆管道,因此使用脚本 运行 其余部分 API 将是一种合理的方法。据我所知,除此之外没有开箱即用的简单方法。

您可以尝试以下 PowerShell 脚本示例:

$DefinitionIds = "PipelineIDs"  #InPut All Pipelineids(e.g. "324,323,xxx" )
$DefinitionId = $DefinitionIds.split(",");
$token = "PAT Token"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

foreach ($i in $DefinitionId)
{
echo $i

$url="https://dev.azure.com/{OrganizationName}/{ProjectName}/_apis/build/definitions/$($i)?api-version=6.0"


$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get  -ContentType application/json

Write-Host "$($response | ConvertTo-Json -Depth 100)"


$response.repository.properties.tfvcMapping= '{"mappings":[{"serverPath":"$/TFVCBranchName","mappingType":"map","localPath":"\"}]}' # ServerPath is the Branch name

$response.repository.name = "TFVCRepoName" #Repo Source Name

$response.name = "Pipeline $i Clone" # Cloned PipelineName 

echo $response.name

$url1= "https://dev.azure.com/{OrganizationName}/{ProjectName}/_apis/build/definitions?api-version=6.0"


$json = @($response) | ConvertTo-Json -Depth 100

$response1 = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method Post -Body $json -ContentType application/json


}

这是脚本中使用的两个 Rest API:

Definitions - Get

Definitions - Create

结果:

克隆的管道将设置为新的 TFVC 分支和构建定义名称。