使用拉取请求自动完成工作项

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

在将工作项链接到拉取请求 (PR) 时,你可以在完成 PR 时自动完成这些工作项。 或者,可以指定工作流状态,以在合并 PR 时将工作项过渡到指定的状态。

此自动化通过确保工作项反映代码更改的当前状态,而无需手动干预来简化开发工作流。

有关详细信息,请参阅创建、查看和管理拉取请求

先决条件

类别 要求
权限 - 若要查看、关注和编辑工作项:查看此节点中的工作项,并 编辑此节点中的工作项 权限设置为 “允许”。 默认情况下,参与者组具有这些权限。 有关详细信息,请参阅设置工作跟踪权限
- 将标记添加到工作项:将项目级创建新标记定义权限设置为允许。 默认情况下,参与者组拥有此权限。
访问级别 - 项目成员
- 将标记添加到工作项,或者查看或跟踪拉取请求:至少具有基本访问权限
- 查看或跟踪工作项:至少具有利益干系人访问权限。 有关详细信息,请参阅 关于访问级别
- 所有项目成员(包括 读者 组中的成员)都可以发送电子邮件,其中包含工作项。

自动完成工作项

若要在合并拉取请求时启用链接工作项的自动完成,请在 合并后选中“完成链接工作项”复选框,如下图所示。 系统将所选内容保存为将来的 PR 的默认值。

“完成拉取请求”对话框,在合并后完成链接的工作项

当自动填充未进行时

在以下情况下,系统不会将工作项状态自动更新为工作项类型(WIT)的 “完成”、“ 已关闭”或 “已完成 ”类别:

  • 工作项已处于“已解决”状态:工作项(其 WIT 使用继承进程模型)已处于 “已解决 ”状态。 在此实例中,系统不会更新状态。 例如,如果派生自敏捷流程的 bug 处于已解决状态,则系统不会将其转换为已关闭
  • 工作项已完成:工作项已在 “已完成 ”状态类别中。 不需要进行进一步转换。
  • 工作流规则阻止转换:WIT 包括工作流域规则,这些规则阻止工作项前进到下一个状态。 例如,规则可能需要在关闭工作项时定义另一个字段。
  • 本地工作流配置:对于本地部署和 Azure Boards 托管的进程模型,必须修改工作流以指定在转换工作流时要执行的作(ACTION 元素)。 有关详细信息,请参阅更改 WIT 的工作流,指定操作

有关自定义工作流的详细信息,请参阅 “自定义工作跟踪体验”。

指定已链接工作项的工作流状态

可以通过在拉取请求说明中输入信息,将工作项转换为特定工作流状态。 在 #ID 前添加提及的工作项的有效工作流状态。 此方法可精确控制合并代码更改时工作项的转换方式。

注意

此功能需要 Azure DevOps Server 2020.1 更新或更高版本。

以下示例演示了转换的用户情景-一个转换为 “已解决 ”状态,另一个转换为 “审阅 ”状态。 系统还会将两个任务标记为 “完成”。

拉取请求的屏幕截图,工作流状态设置为转换 #ID 工作项。

状态转换的语法

在拉取请求说明中使用以下语法模式来指定状态转换:

  • Resolves #123 - 将工作项 123 转换为“已解决”状态
  • Fixes #456 - 将工作项 456 转换为适当的已完成状态
  • Closes #789 - 将工作项 789 转换为“已关闭”状态
  • Review #101 - 将工作项 101 转换为审阅状态

系统识别常见关键字,并根据工作项类型的工作流配置应用适当的状态转换。

禁用自动完成关联的工作项

若要在用户完成拉取请求时禁用自动完成关联的工作项,请执行以下步骤:

  1. 导航到“项目设置>”>,选择存储库。
  2. “设置”选项卡中,关闭提交提及工作项解析的开关。

禁用此设置时,系统不允许在提交注释中提及关闭工作项(例如“修复 #123”)。 此设置会影响拉取请求完成和直接提交提及。

最佳做法

使用自动工作项完成时,请考虑以下最佳做法:

  • 查看工作项状态:在启用自动完成之前,请确保工作项状态与团队的工作流预期保持一致。
  • 使用特定状态转换:需要精确控制时,请在拉取请求说明中使用状态转换语法,而不是依赖于默认完成行为。
  • 测试工作流规则:验证任何自定义工作流规则是否不会阻止自动状态转换。
  • 与团队沟通:确保所有团队成员都了解自动完成如何影响工作项跟踪。

Troubleshooting

如果工作项未按预期自动完成:

  1. 检查权限:验证你是否具有编辑工作项所需的权限。
  2. 查看工作流规则:确保没有工作流字段规则阻止状态转换。
  3. 验证工作项链接:确认工作项已正确链接到拉取请求。
  4. 检查当前状态:验证工作项尚未处于已完成状态。
  5. 查看存储库设置:确保在存储库设置中启用自动完成。