我有一个如下的典型环境设置:
我有两个分支:Develop
和Master
。
在Azure DevOps中是否有设置以下规则的方法:
当在dev环境(在azure devops的发布管道中定义)上成功部署时------>自动创建一个将develop合并到Master的
pull request
。或者另一种情况:如果develop分支的
Build
成功------->自动创建一个将develop合并到Master的pull request
。
任何帮助都将不胜感激。
我有一个如下的典型环境设置:
我有两个分支:Develop
和Master
。
在Azure DevOps中是否有设置以下规则的方法:
当在dev环境(在azure devops的发布管道中定义)上成功部署时------>自动创建一个将develop合并到Master的pull request
。
或者另一种情况:如果develop分支的Build
成功------->自动创建一个将develop合并到Master的pull request
。
任何帮助都将不胜感激。
我刚刚上传了一个能够实现此功能的扩展: https://marketplace.visualstudio.com/items?itemName=ShaykiAbramczyk.CreatePullRequest
您可以使用 Azure DevOps Rest API 来创建一个拉取请求,在建立 / 发布的末尾添加一个 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令牌(在代理任务选项中勾选复选框):
结果:
我将基本参数放在主体中(从分支,到分支,标题),但您可以添加更多参数,例如评审人,请查看此处的文档。
使用Python和DevOps REST API,你可以像这样做。
# Tested in python 3.10
# pip install requests
import base64
import requests
# Fill the following variables with real values
personal_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxx' # https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&viewFallbackFrom=vsts&tabs=Windows
organization = "myorganization"
project_id = "00000000-0000-0000-0000-000000000000"
repository_id = "00000000-0000-0000-0000-000000000000"
authorization = str(base64.b64encode(bytes(f":{personal_access_token}", "ascii")), "ascii")
headers = {"Content-type": "application/json", "Authorization": f"Basic {authorization}"}
prs_url = f"https://dev.azure.com/{organization}/{project_id}/_apis/git/repositories/{repository_id}/pullrequests?api-version=5.1"
# create PR
response = requests.post(
f"{prs_url}",
headers=headers,
data=json.dumps({
"sourceRefName": "refs/heads/release",
"targetRefName": "refs/heads/master",
"title": "release to master",
}),
)
"reviewers": [{"id": "d6245f20-2af8-44f4-9451-8107cb2767db"}
,那如何获取我想要添加为评审人的用户ID呢? - Mohamad Mousheimish