首页 > 解决方案 > Azure Devops - 在管道发布中创建新分支

问题描述

我对使用 Azure Devops 和创建 Builds 和 Releases 比较陌生。我正在尝试创建一个版本(这将进入我们的生产环境),所以此时我想为该版本创建一个分支。我们正在使用本地构建代理。如果我尝试通过执行 git clone 然后执行其他 git 命令来创建该新分支并推送它,它无法在发布过程中完成,因为在本地构建代理上它要求输入用户名和密码。有没有办法解决这个问题?是否有我可以在 Release 中触发的命令或进程来创建这个新分支,而无需使用本地构建代理?

标签: gitazure-devops

解决方案


如果你缺少 PAT 认证,你只需要在{PAT}后面加上https://

像这样 :https://{PAT}@dev.azure.com/{organization}/{project}/_git/{repo-name}

我在这里提供另一种方法。您也可以使用Refs - Update Refs api 来创建分支:

POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=5.0

我在邮递员中测试它,并且可以成功创建一个分支。 在此处输入图像描述

您可以将 powershell 任务添加到发布管道并使用此 api 编写脚本。

这是一个示例:

$uri = 'https://dev.azure.com/{organization}/{pro}/_apis/git/repositories/{repoId}/refs?api-version=5.1';

[array]$requestList = @();
$requestObj = New-Object -TypeName psobject;
$requestObj | Add-Member -MemberType NoteProperty -Name "name" -Value 'refs/heads/feature2';
$requestObj | Add-Member -MemberType NoteProperty -Name "oldObjectId" -Value "0000000000000000000000000000000000000000";
$requestObj | Add-Member -MemberType NoteProperty -Name "newObjectId" -Value "c141b3f6aaec8967763de63a6e9faf6a96c5ea13";
$requestList += @($requestObj);


$body = ConvertTo-Json -InputObject @($requestList);
Write-Host $body;

$response = Invoke-RestMethod -Uri $uri -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Post -Body $body -ContentType application/json;

Write-Host $response;

推荐阅读