在 azure 构建管道中创建 PR 请求

问题描述 投票:0回答:4

假设我们有以下分支机构:

  1. 大师
  2. 冲刺
  3. 故事

故事可以合并到 sprint(对于 sprint 项目)或 Master(对于修补程序),我们想要的是这样的:

  1. Sprint 分支将部署到 PreProd 环境
  2. 如果 QA 满意,sprint 分支将合并到 master,然后部署到 UAT,然后 QA。

我们想要保护 master 或 sprint 分支,因此它们只能通过 PR 请求进行更改。

除了 QA 手动创建 PR 然后合并到主分支之外,我还想在构建任务中执行此操作。所以我尝试使用 Azure CLI 任务来运行批处理:

az repos pr create --auto-complete true --bypass-policy true --bypass-policy-reason "CI build" --repository JerryTestCI  --source-branch R_Current_Sprint --target-branch master

这给了我一个错误: 在运行 Azure DevOps 命令之前,需要运行登录命令(如果使用 AAD/MSA 身份,则运行 az login;如果使用 PAT 令牌,则运行 az devops login)来设置凭据。 请参阅 https://aka.ms/azure-devops-cli-auth 了解更多信息。

但是,当我的脚本在构建任务中运行时,我如何登录?我尝试过这个,但我的构建只会挂在这个命令上。

az devops login --organization https://XXX.visualstudio.com/ 

那么我的想法是正确的工作方式吗?如果可以的话,我如何在构建管道中创建并完成 PR 请求?

git azure-devops
4个回答
4
投票

如果可以的话,我如何在构建中创建并完成 PR 请求 管道?

解决方案1

最简单的方法是使用创建拉取请求任务并选中“设置自动完成”选项。

解决方案2

如果您想从 CLI 执行此操作,请生成 PAT 令牌:

enter image description here

将其保存为秘密变量:

enter image description here

使用 powershell 将其保存为 env 变量

$env:AZURE_DEVOPS_EXT_PAT = '$(token)'

然后使用任何 az devops 命令,它应该经过身份验证。


3
投票

另一个解决方案是安装创建拉取请求扩展,它会自动从构建或发布管道创建Azure DevOps或GitHub存储库的拉取请求,还支持多目标分支。

enter image description here

免责声明:我是作者。


1
投票

您可以通过以下方式使用 az devops cli 登录:

echo $PersonalAccessToken | az devops login
az devops configure --defaults organization=https://dev.azure.com/$OrganizationName project=$ProjectName

https://learn.microsoft.com/en-us/azure/devops/cli/log-in-via-pat?view=azure-devops&tabs=windows

但是,是的,这应该可以正常工作。


0
投票

添加到上述答案 - 如果您的管道构建代理具有足够的权限,则无需创建 PAT。

- checkout: self
    persistCredentials: true
- bash: |
      git config --global user.email "[email protected]"
      git config --global user.name "Azure DevOps Pipeline"
    name: GitConfig
- pwsh: |
   git checkout -b MyBranch main
   New-Item test.txt //add something new
   git add test.txt
   git commit -m "Test commit"
   git push origin "HEAD:MyBranch"
   az repos pr create <INSERT ARGS HERE>
 env:
   AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

所需代码来自以下来源

© www.soinside.com 2019 - 2024. All rights reserved.