CI/CD 部署发布后管道 Azure devops 自动合并
CI/CD pipelines Azure devops automatic merge after deploy release
我有一个经典的环境。设置如下:
我有 2 个分支:Develop
和 Master
。
Azure DevOps 中是否有任何方法可以设置以下 规则:
在开发环境中部署成功时(定义在
azure devops 的发布管道)------> 自动创建一个 pull request
以将 develop 合并到 硕士.
或另一个:如果开发分支的Build
成功------>
自动创建一个pull request
以合并发展为大师。
我们将不胜感激。
- 没有 build-in 任务,但您可以使用 oauth 令牌自己编写脚本,或使用您自己的身份验证针对 api.
发出请求
- 在这里可以使用几乎相同的方法,或者您可以使用分支策略强制拉取请求在合并到 master 之前进行验证(在我看来这更好,因为在每次提交时从 develop 合并到 master毫无意义)。
编辑:
我刚刚上传了一个扩展程序:
https://marketplace.visualstudio.com/items?itemName=ShaykiAbramczyk.CreatePullRequest
您可以使用 Azure DevOps Rest API 创建一个 Pull Request,所以在构建/发布的最后添加一个 PowerShell 任务来完成它,例如:
$body = @{
sourceRefName= "$(Build.SourceBranch)"
targetRefName = "refs/heads/master"
title = "PR from Pipeline"
}
$head = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$json = ConvertTo-Json $body
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.Name)/pullrequests?api-version=5.0"
Invoke-RestMethod -Uri $url -Method Post -Headers $head -Body $json -ContentType application/json
您需要允许脚本访问 OAuth 令牌(选中代理作业选项中的复选框):
结果:
我将基本参数放在 body 中(从分支、到分支、标题),但您可以添加更多参数,如审阅者,请查看文档 here。
我有一个经典的环境。设置如下:
我有 2 个分支:Develop
和 Master
。
Azure DevOps 中是否有任何方法可以设置以下 规则:
在开发环境中部署成功时(定义在 azure devops 的发布管道)------> 自动创建一个
pull request
以将 develop 合并到 硕士.或另一个:如果开发分支的
Build
成功------> 自动创建一个pull request
以合并发展为大师。
我们将不胜感激。
- 没有 build-in 任务,但您可以使用 oauth 令牌自己编写脚本,或使用您自己的身份验证针对 api. 发出请求
- 在这里可以使用几乎相同的方法,或者您可以使用分支策略强制拉取请求在合并到 master 之前进行验证(在我看来这更好,因为在每次提交时从 develop 合并到 master毫无意义)。
编辑:
我刚刚上传了一个扩展程序: https://marketplace.visualstudio.com/items?itemName=ShaykiAbramczyk.CreatePullRequest
您可以使用 Azure DevOps Rest API 创建一个 Pull Request,所以在构建/发布的最后添加一个 PowerShell 任务来完成它,例如:
$body = @{
sourceRefName= "$(Build.SourceBranch)"
targetRefName = "refs/heads/master"
title = "PR from Pipeline"
}
$head = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$json = ConvertTo-Json $body
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.Name)/pullrequests?api-version=5.0"
Invoke-RestMethod -Uri $url -Method Post -Headers $head -Body $json -ContentType application/json
您需要允许脚本访问 OAuth 令牌(选中代理作业选项中的复选框):
结果:
我将基本参数放在 body 中(从分支、到分支、标题),但您可以添加更多参数,如审阅者,请查看文档 here。