git - Azure Devops - 在管道发布中创建新分支
问题描述
我对使用 Azure Devops 和创建 Builds 和 Releases 比较陌生。我正在尝试创建一个版本(这将进入我们的生产环境),所以此时我想为该版本创建一个分支。我们正在使用本地构建代理。如果我尝试通过执行 git clone 然后执行其他 git 命令来创建该新分支并推送它,它无法在发布过程中完成,因为在本地构建代理上它要求输入用户名和密码。有没有办法解决这个问题?是否有我可以在 Release 中触发的命令或进程来创建这个新分支,而无需使用本地构建代理?
解决方案
如果你缺少 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;
推荐阅读
- sql - 如何使用逗号分隔的字符串作为源过滤多个值的查询
- nginx - 如何使用 tomcat 进行多域配置 NGINX?
- cryptography - ATAES132a 状态寄存器显示 0x40
- netsuite - 如何在已保存的搜索中获取客户存款的剩余金额(包括 SuiteScript 代码)
- operating-system - 什么是 OS Image 和 VM image ,简而言之,我需要用更多的视觉和外行术语来理解?
- airsim - 在现实世界中部署基于 airsim 的模拟
- javascript - TipTap Vue 组件 - 如何从组件按钮切换节点上的换行
- ios - 尝试在 iPhone 上构建应用程序时,Xcode 中出现 Apple mach-o Linker (id)Error
- typescript - 如何扩展 Mocha 的 Context 接口?
- c# - Episerver:我缺少哪个指令/命名空间(解决错误 CS0246)?(“使用 ______;”)