Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
在Azure Devops中的拉取请求中显示接受条件_Azure_Azure Devops_Version Control_Devops - Fatal编程技术网

在Azure Devops中的拉取请求中显示接受条件

在Azure Devops中的拉取请求中显示接受条件,azure,azure-devops,version-control,devops,Azure,Azure Devops,Version Control,Devops,在Azure Devops中查看PRs时,最好在描述中显示任务/故事的接受标准,例如在提交消息之前。这是为了确保实现了所有必需的功能,并考虑了所有边缘情况。似乎需要手动打开工作项才能找到此附加信息 空调是否可以自动显示在请购单的说明中?这是可能的,但不是直接的: 我想到的一个选项是通过分支策略指定可选的审阅者: 您可以转到项目设置->存储库->自动包含的审阅者。例如,您可以使用一个没有真实身份的服务帐户,或者诚实地说,您可以使用任何其他帐户,并将其分配给为特定分支机构创建的每个PR。当您将此类

在Azure Devops中查看PRs时,最好在描述中显示任务/故事的接受标准,例如在提交消息之前。这是为了确保实现了所有必需的功能,并考虑了所有边缘情况。似乎需要手动打开工作项才能找到此附加信息


空调是否可以自动显示在请购单的说明中?

这是可能的,但不是直接的:

我想到的一个选项是通过分支策略指定可选的审阅者:

您可以转到项目设置->存储库->自动包含的审阅者。例如,您可以使用一个没有真实身份的服务帐户,或者诚实地说,您可以使用任何其他帐户,并将其分配给为特定分支机构创建的每个PR。当您将此类分配设置为可选时,您将能够在不接受该帐户的情况下完成PR,并且会在PR的提要中添加说明,这可能是您的AC


当然,假设你有通用的ACs。如果您想基于任务AC添加AC,您可以利用Azure DevOps的REST API,并在每次创建PR时添加它们。需要一些额外的编程,但仍然可行。

这是可能的,但不是直接的:

我想到的一个选项是通过分支策略指定可选的审阅者:

您可以转到项目设置->存储库->自动包含的审阅者。例如,您可以使用一个没有真实身份的服务帐户,或者诚实地说,您可以使用任何其他帐户,并将其分配给为特定分支机构创建的每个PR。当您将此类分配设置为可选时,您将能够在不接受该帐户的情况下完成PR,并且会在PR的提要中添加说明,这可能是您的AC


当然,假设你有通用的ACs。如果您想基于任务AC添加AC,您可以利用Azure DevOps的REST API,并在每次创建PR时添加它们。需要一些额外的编程,但它仍然是可行的。

有一个包含详细信息的拉取请求肯定可以改善审阅者的体验,并且由于PR与提交历史相关,因此PR的描述也可以对审阅历史的个人有所帮助。虽然没有将工作项的详细信息复制到PR描述的内置功能,但有几个选项

拉取请求策略的选项 需要链接的工作项:策略不支持要求工作项链接到PR的选项。这些选项可以作为说明展开,并轻松链接到任务。 需要注释解析:您可以在PR中添加注释,要求作者提供更多详细信息。直到他们满足要求,公共关系才会结束。 用于改进拉取请求描述的选项 拉取请求模板:支持使用创建PR之前出现的默认文本填充PR。这只是一个带有特殊命名约定的降价文件,因此没有添加自动化的选项,但它的目的是让您在接受PR之前向PR作者传达您想要的内容。 提交消息:鼓励您的团队提供更好的提交消息。如果消息1234中包含工作项编号,则会自动展开到工作项说明,并自动链接到PR的工作项。您甚至可以包含语法来更改已解决工作项的状态:1234 降价:PR描述可以用降价格式编写,这样PR作者就可以为他们的变更提供一个很好的案例,包括图片、表格等。 PR可扩展性选项 老实说,为了完整性,我在这里加入了这些。要克服开发人员的卫生问题,这需要大量的代码和头疼的事情

自定义生成:您可以编写一个生成定义,在每次代码更改时运行,以检查生成的详细信息,如果某些详细信息不存在,则会失败。PR ID的高级详细信息以Build.Reason、Build.SourceBranch的形式提供,因此您可以使用并执行一些自定义检查,例如是否存在某些关键字或所需的格式。然后,您可以将此生成定义关联为PR策略中的必需生成。 Status API:与上述方法类似,创建一个构建,用于查找您的构建定义插入到PR描述中的某些关键字的存在。如果未找到此文本,请使用API获取链接到PR的工作项的详细信息,更新PR并向PR发布状态消息。根据需要将状态检查的定义添加到PR策略中。 Webhook+Status API:与这两种方法类似,您可以设置自定义Webhook,在创建或更新PR时调用自定义端点,而不是触发构建。海关总署 int将状态消息发布回PR,并且PR策略设置为强制执行该消息。
作为一名评审员,需要记住的一点是,在满足您的需求之前,您不必完成PR。

有一个包含详细信息的拉取请求肯定可以改善评审员的体验,由于PR与提交历史相关,因此对PR的描述也有助于个人回顾历史。虽然没有将工作项的详细信息复制到PR描述的内置功能,但有几个选项

拉取请求策略的选项 需要链接的工作项:策略不支持要求工作项链接到PR的选项。这些选项可以作为说明展开,并轻松链接到任务。 需要注释解析:您可以在PR中添加注释,要求作者提供更多详细信息。直到他们满足要求,公共关系才会结束。 用于改进拉取请求描述的选项 拉取请求模板:支持使用创建PR之前出现的默认文本填充PR。这只是一个带有特殊命名约定的降价文件,因此没有添加自动化的选项,但它的目的是让您在接受PR之前向PR作者传达您想要的内容。 提交消息:鼓励您的团队提供更好的提交消息。如果消息1234中包含工作项编号,则会自动展开到工作项说明,并自动链接到PR的工作项。您甚至可以包含语法来更改已解决工作项的状态:1234 降价:PR描述可以用降价格式编写,这样PR作者就可以为他们的变更提供一个很好的案例,包括图片、表格等。 PR可扩展性选项 老实说,为了完整性,我在这里加入了这些。要克服开发人员的卫生问题,这需要大量的代码和头疼的事情

自定义生成:您可以编写一个生成定义,在每次代码更改时运行,以检查生成的详细信息,如果某些详细信息不存在,则会失败。PR ID的高级详细信息以Build.Reason、Build.SourceBranch的形式提供,因此您可以使用并执行一些自定义检查,例如是否存在某些关键字或所需的格式。然后,您可以将此生成定义关联为PR策略中的必需生成。 Status API:与上述方法类似,创建一个构建,用于查找您的构建定义插入到PR描述中的某些关键字的存在。如果未找到此文本,请使用API获取链接到PR的工作项的详细信息,更新PR并向PR发布状态消息。根据需要将状态检查的定义添加到PR策略中。 Webhook+Status API:与这两种方法类似,您可以设置自定义Webhook,在创建或更新PR时调用自定义端点,而不是触发构建。自定义端点将状态消息发布回PR,并且PR策略设置为强制执行该消息。 作为一名评审员,需要记住的一点是,在满足您的需求之前,您不必完成PR

AC能否自动显示在PR的描述中

简而言之,答案是肯定的

首先,我需要声明,目前没有现成的方法来满足您的需求。在10月1日刚刚发布的最新版本中,MS引入了一项新功能,即在合并请求时自定义工作项状态。但它仅适用于工作项状态,不适用于其他字段

为了解决这个请求,我们可以在目标分支上添加一个构建验证,以调用RESTAPI,用任务/故事的接受标准更新描述

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=6.0
从上面的RESTAPI URL,我们可以知道,如果我们想要使用RESTAPI Pull Requests-Update,我们需要提供pullRequestId

在中,有一个变量System.PullRequest.PullRequestId,我们可以使用它来获取PullRequestId

在获得pullRequestId之后,我们可以使用另一个REST API来获取与pull请求关联的工作项:

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/workitems?api-version=6.0
我们可以获得工作项Id:

现在,我们可以使用获取验收标准的值:

最后,我们可以使用RESTAPI Pull Requests-Update,用任务/故事的接受标准更新描述

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=6.0
以下是我的测试powershell脚本:

$PullRequestId = $Env:System_PullRequest_PullRequestId

Write-Host "Current PullRequestId is $PullRequestId"

$url = "https://dev.azure.com/<YourOrganizationName>/<YourProjectName>/_apis/git/repositories/<YourRepoId>/pullRequests/$($PullRequestId)/workitems?api-version=6.0"
$PullRequestWorkItems= Invoke-RestMethod -Uri $url -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get

$WorkItemId= $PullRequestWorkItems.value.id

Write-Host This is WorkItems Id: $WorkItemId

$Testurl = "https://dev.azure.com/<YourOrganizationName>/<YourProjectName>/_apis/wit/workitems/$($WorkItemId)?api-version=6.0"
$WorkitemInfo= Invoke-RestMethod -Uri $Testurl -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get

$AcceptanceCriteria= $WorkitemInfo.fields.'Microsoft.VSTS.Common.AcceptanceCriteria'

Write-Host This is Acceptance Criteria info: $AcceptanceCriteria


$UpdatePRurl = "https://dev.azure.com/<YourOrganizationName>/<YourProjectName>/_apis/git/repositories/a<YourRepoId>/pullRequests/$($PullRequestId)?api-version=6.0"

$connectionToken="Your PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))


$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }

$body=@"
  {
    "description": "$($AcceptanceCriteria)"
  }
"@

Write-Host "$url"
$response= Invoke-RestMethod -Uri $UpdatePRurl -ContentType "application/json" -Body $body -headers @{authorization = "Basic $base64AuthInfo"} -Method PATCH  
这是测试结果:

AC能否自动显示在PR的描述中

简而言之,答案是肯定的

首先,我需要声明,目前没有现成的方法来满足您的需求。在10月1日刚刚发布的最新版本中,MS引入了一项新功能,即在合并请求时自定义工作项状态。但它仅适用于工作项状态,不适用于其他字段

为了解决这个请求,我们可以在目标分支上添加一个构建验证来调用RESTAPI,用acc更新描述 任务/故事的接受标准

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=6.0
从上面的RESTAPI URL,我们可以知道,如果我们想要使用RESTAPI Pull Requests-Update,我们需要提供pullRequestId

在中,有一个变量System.PullRequest.PullRequestId,我们可以使用它来获取PullRequestId

在获得pullRequestId之后,我们可以使用另一个REST API来获取与pull请求关联的工作项:

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/workitems?api-version=6.0
我们可以获得工作项Id:

现在,我们可以使用获取验收标准的值:

最后,我们可以使用RESTAPI Pull Requests-Update,用任务/故事的接受标准更新描述

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=6.0
以下是我的测试powershell脚本:

$PullRequestId = $Env:System_PullRequest_PullRequestId

Write-Host "Current PullRequestId is $PullRequestId"

$url = "https://dev.azure.com/<YourOrganizationName>/<YourProjectName>/_apis/git/repositories/<YourRepoId>/pullRequests/$($PullRequestId)/workitems?api-version=6.0"
$PullRequestWorkItems= Invoke-RestMethod -Uri $url -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get

$WorkItemId= $PullRequestWorkItems.value.id

Write-Host This is WorkItems Id: $WorkItemId

$Testurl = "https://dev.azure.com/<YourOrganizationName>/<YourProjectName>/_apis/wit/workitems/$($WorkItemId)?api-version=6.0"
$WorkitemInfo= Invoke-RestMethod -Uri $Testurl -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get

$AcceptanceCriteria= $WorkitemInfo.fields.'Microsoft.VSTS.Common.AcceptanceCriteria'

Write-Host This is Acceptance Criteria info: $AcceptanceCriteria


$UpdatePRurl = "https://dev.azure.com/<YourOrganizationName>/<YourProjectName>/_apis/git/repositories/a<YourRepoId>/pullRequests/$($PullRequestId)?api-version=6.0"

$connectionToken="Your PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))


$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }

$body=@"
  {
    "description": "$($AcceptanceCriteria)"
  }
"@

Write-Host "$url"
$response= Invoke-RestMethod -Uri $UpdatePRurl -ContentType "application/json" -Body $body -headers @{authorization = "Basic $base64AuthInfo"} -Method PATCH  
这是测试结果:


您可能有0到多个关联的工作项。没有强制执行工作项类型,因此工作项甚至可能没有验收标准。Azure DevOps没有任何现成的东西支持这一点。如果没有验收标准,那么如果显示所有ACs(因此没有ACs)就足够了,对吗@CasperDijkstra,我为你的要求提供了解决方案。这并不难,只是有点复杂,但在测试后它是有效的,您可以检查它是否有助于您您可能有0到多个关联的工作项。没有强制执行工作项类型,因此工作项甚至可能没有验收标准。Azure DevOps没有任何现成的东西支持这一点。如果没有验收标准,那么如果显示所有ACs(因此没有ACs)就足够了,对吗@CasperDijkstra,我为你的要求提供了解决方案。这并不难,只是有点复杂,但在测试后它是有效的,您可以检查它是否对您有帮助这似乎工作得很完美,但是您必须手动运行PowerShell脚本吗?或者也可以自动执行吗?@CasperDijkstra,不,您不需要手动运行powershell脚本。您只需使用上述powershell脚本在新管道中添加一个内联powershell任务,然后在目标分支上添加此管道作为生成验证。。在这种情况下,当我们将分支合并到目标分支时,它将执行该管道。这似乎工作得很好,但是您必须手动运行PowerShell脚本吗?或者也可以自动执行吗?@CasperDijkstra,不,您不需要手动运行powershell脚本。您只需使用上述powershell脚本在新管道中添加一个内联powershell任务,然后在目标分支上添加此管道作为生成验证。。在本例中,当我们将分支合并到目标分支时,它将执行该管道。