Git 在Azure DevOps中完成发布后,如何创建拉取请求?

Git 在Azure DevOps中完成发布后,如何创建拉取请求?,git,azure-devops,azure-pipelines,pull-request,azure-pipelines-release-pipeline,Git,Azure Devops,Azure Pipelines,Pull Request,Azure Pipelines Release Pipeline,我正在从事的一个项目有两个长期存在的特性分支和主分支 为了完全自动化部署,我想在Azure DevOps发布的任何时候都创建一个从master到这两个功能分支的pull请求 Azure DevOps中的哪种工具允许我将创建拉请求作为发布任务?您可以在发布期间通过创建拉请求 有,但可能不适合你的要求 简单的方法是,您可以通过PowerShell任务来完成此任务: 选择阶段(例如,在代理上运行)并选中允许脚本访问OAuth令牌选项。你也可以用 添加PowerShell任务 简单示例: param(

我正在从事的一个项目有两个长期存在的特性分支和主分支

为了完全自动化部署,我想在Azure DevOps发布的任何时候都创建一个从master到这两个功能分支的pull请求


Azure DevOps中的哪种工具允许我将创建拉请求作为发布任务?

您可以在发布期间通过创建拉请求

有,但可能不适合你的要求

简单的方法是,您可以通过PowerShell任务来完成此任务:

  • 选择阶段(例如,在代理上运行)并选中允许脚本访问OAuth令牌选项。你也可以用
  • 添加PowerShell任务
  • 简单示例:

    param(
    [string]$project,
    [string]$repo,
    [string]$sourceBranch,
    [string]$targetBranch,
    [string]$title,
    [string]$des,
    [string]$token
    )
    $bodyObj=@{
      "sourceRefName"="refs/heads/$sourceBranch";
      "targetRefName"= "refs/heads/$targetBranch";
      "title"= "$title";
      "description"="$des";
    }
    $bodyJson=$bodyObj| ConvertTo-Json
    $uri="https://XXX.visualstudio.com/DefaultCollection/$project/_apis/git/repositories/$repo/pullRequests?api-version=3.0"
    Write-Output $bodyJson
    Write-Output $uri
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "test",$token)))
    $result= Invoke-RestMethod -Method POST -Uri $Uri -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $bodyJson
    
    参数:
    -project“XXX”-repo“XXX”-sourceBranch“XX”-targetBranch“XX”-title“XX”-des“XX”-令牌[$(System.AccessToken)或个人访问令牌]

    您可以安装该扩展,它使您能够使用多目标分支从发布管道自动创建请求:


    将这些任务作为本地可用的任务在VSTS@baywet您可以通过VSTS扩展构建自定义任务:我接受了您的答案,因为它似乎是正确的;尽管如此,我并没有亲自测试它,而是转向了基于主干的开发,在那里这不再是一个问题。我很感激你能如此迅速地做出反应,并给出一个彻底的解决方案!我参加聚会迟到了,但是:我得到了
    “TF401027:您需要Git'PullRequestContrible'权限来执行此操作。
    使用OAuth令牌($(System.AccessToken))。不过我有相应的权限。有什么想法吗?您可以尝试此替代身份验证方法:
    $headers=@{Authorization=”Bearer$env:SYSTEM\u ACCESSTOKEN“}$pipeline=Invoke RestMethod-Uri$url-Method Post-Headers$Headers-Body$Body-ContentType'application/json'