如何在Azure DevOps中向管道中的远程分支发出拉取请求?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Azure DevOps中向管道中的远程分支发出拉取请求?相关的知识,希望对你有一定的参考价值。

此问题类似于以下问题:How to do a Git pull request on remote branches via the command line

我有一个管道,该管道生成带有新文档的分支,该文档需要集成到主分支的远程存储库中。这需要通过请求请求来完成,我尝试使用git命令git request-pull无济于事,因为我看不到pr。这就是我目前所拥有的(直接将新分支合并到master,而没有pr)。

- script: |
    cd documentation
    git config --global user.email "myemail@someOrganization.com" && git config --global user.name "John Doe"
    git checkout -b release-notes
    dir
    mv $(System.DefaultWorkingDirectory)\\..\\tempdocs.md $(System.DefaultWorkingDirectory)\\..\\"$(SourceBranch)".md
    mv $(System.DefaultWorkingDirectory)\\..\\"$(SourceBranch)".md docs\\applications\\app\\versions\\"$(SourceBranch)".md
    git add .
    git commit -m "add release notes for $(SourceBranch)"
    git checkout feature/automatic-docs && git merge release-notes && git push origin
  displayName: 'Publish Documentation'
答案

我的同事桑德(Sander)有created an extension which does all the hard work of creating the PR

[如果您想知道它是如何完成的,请check out the source to the extension

使用az repos pr create command in the Azure CLI with the DevOps extension的另一个选项。您需要启用对管道的OAuth令牌的脚本访问权,以验证我的身份。

另一答案

您可以将Azure devops服务REST API用于az repos pr create

create a pull request

因此,您只需要在powershell任务中运行git命令并添加更多代码即可在api上调用。请检查以下示例:

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

在上述powershell脚本的最后,调用了pull request api以在云中创建PR。要获取个人访问令牌,请选中 - powershell: | git config --global user.email "@email.com" git config --global user.name "name" git checkout -b new_branch -q git .... $PAT= "Personal access token" $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)")) $url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.ID)/pullrequests?api-version=5.1" $body = '{ "sourceRefName": "refs/heads/sourcebranch", "targetRefName": "refs/heads/targetbranch", "title": "A new feature", "description": "Adding a new feature", }' Invoke-RestMethod -Uri $url -Method post -Header @{Authorization = "Basic $base64AuthInfo"} -ContentType "application/json" -Body $body

以上是关于如何在Azure DevOps中向管道中的远程分支发出拉取请求?的主要内容,如果未能解决你的问题,请参考以下文章

基于用于触发管道 Azure Devops 的分支指定构建分支

用于更新文件和签入 TFS 的 Azure DevOps 管道任务

Azure Devops 在管道中找不到要复制到远程计算机的文件

Azure Devops 管道通过生成验证触发两次

将构建工件发布到远程 Git 存储库 - Azure DevOps

如何在 Azure DevOps 中删除合并的功能分支?