Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 在Azure中,在创建/完成拉取请求时,是否有方法用回购和/或分支标记工作项/用户故事?_Git_Azure_Azure Devops_Pull Request - Fatal编程技术网

Git 在Azure中,在创建/完成拉取请求时,是否有方法用回购和/或分支标记工作项/用户故事?

Git 在Azure中,在创建/完成拉取请求时,是否有方法用回购和/或分支标记工作项/用户故事?,git,azure,azure-devops,pull-request,Git,Azure,Azure Devops,Pull Request,我们有一个政策,总是将一个工作项/用户故事链接到一个PR。有没有一种方法可以自动将工作项标记为回购名称/PR合并到的分支机构 目前正在手动执行此操作并尝试将其自动化(我们在Azure Devops中使用git)。是的,有一种方法可以在创建PR时自动标记链接的工作项。可以通过向分支策略添加管道来实现这一点。并调用RESTAPI来标记构建验证管道中的工作项。请参阅以下步骤: 1、创建生成验证管道。在RESTAPI下面添加要调用的脚本任务 调用api以获取所有链接的工作项 调用api将标记添加到工作项

我们有一个政策,总是将一个工作项/用户故事链接到一个PR。有没有一种方法可以自动将工作项标记为回购名称/PR合并到的分支机构


目前正在手动执行此操作并尝试将其自动化(我们在Azure Devops中使用git)。

是的,有一种方法可以在创建PR时自动标记链接的工作项。可以通过向分支策略添加管道来实现这一点。并调用RESTAPI来标记构建验证管道中的工作项。请参阅以下步骤:

1、创建生成验证管道。在RESTAPI下面添加要调用的脚本任务

调用api以获取所有链接的工作项

调用api将标记添加到工作项

您可以通过引用验证管道中的预定义变量
$(Build.Repository.name)
来获取回购名称。查看更多。下面是powershell任务中的脚本示例

#PR workitem list api
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.Name)/pullRequests/$(System.PullRequest.PullRequestId)/workitems?api-version=6.1-preview.1"

$response= Invoke-RestMethod -Uri $url -Headers @{authorization = "Bearer $(System.AccessToken)"} -Method Get

#get all the related workitem ids
$ids = $response.value.id
#get the PR target branch name
$targetBranch = "$(System.PullRequest.TargetBranch)".split("/")[-1]
           
$newTag=  "$(Build.Repository.Name)/$($targetBranch)"

Foreach($id in $ids){

    $wurl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/wit/workitems/$($id)?api-version=6.1-preview.3"

    # call get workitem api to get the existing tags
    $workitem = Invoke-RestMethod -Uri $wurl -Headers @{authorization = "Bearer $(System.AccessToken)"} -Method Get

    $tags = $workitem.fields.'System.Tags' + ";$($newTag)"

    $body =  @(
               @{
                op= "add";
                path= "/fields/System.Tags";
                value= "$($tags)"
              }
             )
    # add tags to work item.
    Invoke-RestMethod -Uri $wurl -Headers @{authorization = "Bearer $(System.AccessToken)"} -Method patch -Body (ConvertTo-Json $body) -ContentType "application/json-patch+json"

}
要在上述脚本中使用系统令牌
$(system.AccessToken)
。您需要选中选项
允许脚本访问代理作业的OAuth令牌。见下文:

2、为目标分支的分支策略配置生成验证

转到目标分支的分支策略页面。添加上述管道作为生成验证管道。见下文:


在分支策略中设置生成验证后。创建PR时。验证管道将被触发,并自动将标记添加到工作项。

您好,您是否有机会查看下面的解决方案。事情进展如何?很抱歉耽搁了,我被安排了一个紧急项目,还没有机会。虽然看起来很有希望,但我会确保在尝试后尽快标出答案。