我想根据谁提出PR而不是PR的内容来分配所需的批准人。
我有一组由多个团队维护的仓库。我希望有一个团队根据进行PR的用户自动添加为必需的审阅者。
这有可能吗?
答案 0 :(得分:1)
这有可能吗?
这是可能。但是该过程将非常复杂,因为Azure Devops没有这种即用的功能,因此我们必须使用Build Validation/Rest API/PS
来实现所需的功能。
1。使用PS任务创建Classic Build管道。
2。在分支机构策略中添加build validation。因此,如果有人提出公关,该管道将首先运行。
3。如果PR触发了一个管道,我们可以访问变量$(Build.Repository.ID)
,$(Build.RequestedFor)
(创建PR的用户),$(Build.RequestedForEmail)
(用户的电子邮件)。参见predefined variables。
4。使用Teams-Get获取当前项目中的团队列表。您现在有了TeamID,现在知道了用户所属的相应TeamID。
5。使用powershell switch或if语句动态定义用户所属的团队。
switch ("$(Build.RequestedFor)")
{
"User1" {$TeamID="xxxx"; Break}
"User2" {$TeamID="xxxx"; Break}
"User3" {$TeamID="xxxx"; Break}
Default {
"No matches"
}
}
6。使用Configurations-List列出此项目中的ConfigurationID。 (您可能还需要通过SourceRepo和SourceBranch确定正确的ConfigurationID)
7。然后使用Configuration-Update更新分支策略以动态定义所需的批准者。
请求正文如下:
{
"isEnabled": true,
"isBlocking": true,
"type": {
"id": "fd2167ab-b0be-447a-8ec8-39368250530e"
},
"settings": {
"requiredReviewerIds": [
"{replace it with corresponding TeamID}"
],
"filenamePatterns": [],
"addedFilesOnly": false,
"scope": [
{
"repositoryId": "{replace it with your repoID in step3}",
"refName": "refs/heads/master",
"matchKind": "exact"
}
]
}
}
您可以在同一PS任务中执行step5和step7。