将 GitHub 提交、拉取请求、分支和问题关联到 Azure Boards 的工作项中

Azure DevOps 服务 |Azure DevOps Server |Azure DevOps Server 2022

本文介绍将 Azure Boards 项目连接到 GitHub 存储库后,如何将工作项链接到 GitHub 提交、拉取请求、分支和生成结果。 对提交和分支使用 #mention 语法,使用!提及在工作项讨论中引用GitHub拉取请求,或直接从Azure Boards工作项添加GitHub提交、拉取请求或分支链接。

Note

GitHub集成支持:

  • Azure DevOps Services:通过用于GitHub的 Azure Boards 应用与 GitHub.com 和 GitHub Enterprise Server 存储库集成。
  • Azure DevOps Server 2020 及更高版本:仅支持与 GitHub Enterprise Server 存储库集成。
  • 其他 Git 存储库:不支持集成。

Tip

可以在本文后面使用 AI 来帮助完成此任务,或参阅启用 Azure DevOps MCP Server 的 AI 帮助以开始使用。

Prerequisites

Category Requirements
权限 你对Azure Boards项目和GitHub存储库具有参与者访问权限。
项目连接 将 Azure Boards 项目连接到包含要链接的提交、拉取请求和分支的 GitHub 存储库。 有关详细信息,请参阅 Azure Boards-GitHub 集成

Note

如果项目使用托管 XML 进程模型,请更新工作项类型以查看“开发”部分和GitHub链接类型。 有关详细信息,请参阅 用于选择工作项类型的更新 XML 定义

使用 GitHub 文本中的 AB# 提及将其链接到 Azure Boards 工作项。

若要创建链接:

  1. AB#{ID} 添加到提交消息、拉取请求描述或问题描述中。
  2. 推送提交,或保存拉取请求或议题。
  3. 打开工作项以确认链接显示在 “开发 ”部分中。

在评论中或在拉取请求标题中使用 AB#ID 不会为工作项创建链接。

AB#{ID}

例如,AB#125 链接到工作项 ID 125。

还可以从提交或拉取请求文本转换工作项。 Azure Boards可识别{state}{state category}关键字(例如fixfixes)以及fixed,然后将该转换应用到AB#后面的引用。

例如,当拉取请求说明包含有效的状态名称时, Closed AB#1234系统将引用的工作项更新为该特定状态。 如果无法直接识别状态名称,Azure Boards尝试将其与工作流类别(如 ResolvedCompleted)匹配。 如果找到匹配项,则工作项将转换为在该类别下定义的第一个可用状态。

默认情况下,使用 fixfixesfixed 引用的工作项会转换为与 已解析 类别关联的第一个状态。 如果当前进程中不存在此类状态,系统将工作项转换为 “已完成 ”类别中的第一个状态。

Important

你仍然可以链接工作项并指向其他分支,但状态转换规则只有在合并请求被合并到默认分支后才适用。

有关详细信息,请参阅如何在 Azure Boards 积压工作和面板中使用工作流类别状态

使用以下仅包含链接的示例:

提交或拉取请求消息 Action
AB#123 关联到 Azure Boards 工作项 123。 不会发生状态转换。
Adds a new feature, AB#123. 关联到 Azure Boards 工作项 123。 不会发生状态转换。
AB#123, AB#124, and AB#126 将 Azure Boards 工作项 123、124 和 126 链接起来。 不会发生状态转换。
Fixing multiple bugs: issue #123 and user story AB#234 GitHub问题123和Azure Boards工作项234的链接。 不进行转换。

使用以下链接和过渡示例:

提交或拉取请求消息 Action
Fixed AB#123 链接并将工作项转换为 “已解决 的工作流状态”类别;如果未定义,则为 “已完成 ”工作流状态类别。
Closed AB#123 链接并将工作项转换为 “已关闭 ”工作流状态。 如果没有定义,则不进行转换。
Adds a new feature, fixes AB#123. 链接并将工作项转换为 “已解决 的工作流状态”类别;如果未定义,则为 “已完成 ”工作流状态类别。
Fixes AB#123, AB#124, and AB#126 指向 Azure Boards 的工作项 123、124 和 126 的链接。 仅将第一项 123 转换为 “已解析 的工作流状态”类别;如果未定义,则转换 “已完成 ”工作流状态类别。
Fixes AB#123, Fixes AB#124, Fixes AB#125 到 Azure Boards 工作项 123、124 和 125 的链接。 将所有项转换为“已解析”工作流状态类别;如果未定义任何工作流状态类别,则转换为“已完成”工作流状态类别。

Note

如果已将同一 GitHub 存储库连接到两个或更多个 Azure DevOps 组织中定义的项目,可能会看到意外的 AB# mention 链接。 有关详细信息,请参阅 解决连接问题。 因此,建议仅将GitHub存储库连接到单个Azure DevOps组织中定义的项目。

在拉取请求说明中使用 AB# 添加指向工作项的链接时,这些链接将显示在GitHub拉取请求的 Development 节中。 只有在拉取请求说明中使用 AB# 时,这些链接才可用。 如果直接从工作项链接到拉取请求,它们不会出现。 从说明中删除 AB# 引用也会从“开发”部分删除该引用。

GitHub 拉取请求开发部分上的 AB# 链接的屏幕截图。

从工作项创建GitHub分支

若要直接从工作项创建GitHub分支,请使用以下步骤:

  1. 在开发板中,找到要用于创建GitHub分支的工作项。

  2. 选择 工作项操作>新建 GitHub 分支

    工作项“更多操作”选择以及突出显示的“新建 GitHub 分支”选项的屏幕截图。

  3. 创建GitHub分支对话框中,输入分支名称。 选择GitHub存储库和基分支。

  4. 选择 创建

    “创建 GitHub 分支”对话框的截图。

    Azure Boards在指定的GitHub存储库中创建分支,并将其链接到工作项。 有关详细信息,请参阅 Azure Boards-GitHub 集成

  1. 打开工作项并转到 “开发 ”区域。

  2. 选择“添加链接”。 从每个下拉菜单中,选择link 类型GitHub存储库GitHub拉取请求。 可以在存储库中搜索和向下钻取,以查找并选择特定的拉取请求或提交,而无需复制和粘贴 URL。

  3. 选择“添加链接”。

    显示用于向工作项添加拉取请求链接的五步序列的屏幕截图。

    Azure Boards 会检查以确保你输入了有效的链接。 链接到的GitHub存储库必须连接到Azure Boards项目,否则验证将失败。

Note

如果使用 Azure DevOps Server 和 GitHub Enterprise Server,则完成 AB# 链接时存在延迟。 该过程使用“推拉”设计,每小时从 GitHub 事件中拉取提交、PR 和问题的增量更改。

多个事件自动更新工作项窗体上的链接,因此无需手动创建它们。 这些事件包括:

GitHub事件 Action
链接到分支 当从分支创建拉取请求时,它会自动链接到工作项。
合并提交 合并拉取请求后,生成的合并提交会自动链接到工作项。
删除分支 如果删除分支(通常在合并后),则其链接会自动从工作项中删除。

工作项窗体中的“开发”部分使用 GitHub 图标列出了创建的指向 GitHub 提交和拉取请求的链接。

工作项窗体的截图中,“开发”部分显示 GitHub 链接。

选择链接以在 GitHub 中打开提交或拉取请求。

GitHub拉取请求洞察

开发”部分中的链接GitHub拉取请求显示额外的状态详细信息。 无需在GitHub中打开拉取请求即可评估进度。

拉取请求洞见的先决条件

要查看拉取请求见解,请转到 GitHub 中的 Azure Boards 应用,并接受更新的权限以对检查进行读写访问。

Azure Boards GitHub 应用权限对话框的截图,显示了更新的检查权限。

查看拉取请求状态详细信息

  1. 打开一个与 GitHub 拉取请求相关联的工作项。

  2. “开发 ”部分中,找到链接的拉取请求。 拉取请求链接旁边会显示以下状态详细信息:

    • 草稿状态:显示拉取请求是否仍然是草稿。
    • 审阅状态:显示拉取请求是否需要评审、批准还是已请求更改。
    • 检查状态:显示 CI 检查是通过、失败还是挂起。

    显示链接的 GitHub 拉取请求的“开发”部分屏幕截图,包含已关闭、评审和检查状态详细信息指示器。

  3. 将鼠标悬停在状态指示器上以查看更多详细信息,或选择拉取请求链接以直接在GitHub中打开它。

使用 ! 提及GitHub拉取请求

使用 ! 提及直接从任何工作项富文本字段或讨论评论中引用和讨论 GitHub 拉取请求。 在文本字段中键入 ! 时,将显示一个选取器,可用于从连接的存储库中搜索并选择GitHub拉取请求。 所选拉取请求作为可单击链接插入。

使用此功能可以轻松地在工作项说明、验收条件或讨论线程中引用相关的拉取请求,而无需手动复制 URL。

Gif 显示如何使用 ! 提及从工作项讨论中引用 GitHub 拉取请求。

查看 YAML 管道的生成状态(在生成中集成)

使用 Azure Pipelines YAML 构建托管在 GitHub 存储库中的代码时,可以在关联的工作项上自动生成 在生成时集成 链接。 此功能为GitHub存储库提供构建可追溯性,实现与Azure Repos相同的使用体验。

启用此功能:

  1. 打开 YAML 管道,选择“ 更多操作”,然后选择“ 设置”。

  2. 管道设置对话框中,启用自动链接此生成中的新工作项

    YAML 管道设置对话框的屏幕截图,其中显示了此生成选项中的“自动链接新工作项”。

生成完成后,在生成中集成链接会自动出现在每个相关工作项的“开发”部分,让你的团队获得从工作项到生成的完整可追溯性。

显示工作项中“开发”部分“在生成中集成”链接的屏幕截图。

有关配置此设置的详细信息,请参阅 配置管道以支持工作跟踪

在板上查看GitHub对象

在看板上启用 GitHub 注释后,您可以快速打开已链接的 GitHub 提交、拉取请求或问题,以查看更多详细信息。 有关详细信息,请参阅 自定义卡片

显示工作项卡片上的 GitHub 链接的看板屏幕截图。

如果配置 Azure DevOps MCP 服务器,则可以使用自然语言描述GitHub到工作项链接任务,而不是手动导航工作项表单。

将这些提示用作方案示例。 支持的操作因配置的工具集、扩展版本和权限而异。

某些提示可能会返回指导,而不是执行写入操作,或者可能需要多个提示,具体取决于已启用的 MCP 工具。

在运行提示词之前,请将诸如 <Contoso><owner/repo><sha> 之类的占位符替换为您的实际值。

使用此快速运行和验证流:

  1. 从表中运行一个提示。
  2. 查看所执行操作的响应。
  3. 打开工作项,并在 “开发 ”部分中确认结果。
  4. 打开相关GitHub项目并确认预期的链接或更新。

首先尝试以下提示:

  • Link work item AB#125 in project <Contoso> to GitHub pull request <owner/repo>#42
  • Link work item AB#312 in project <Contoso> to GitHub commit <owner/repo>@<sha>
  • Summarize all GitHub commits and pull requests linked to work item AB#312 in project <Contoso>
任务 示例提示
将工作项链接到拉取请求 Link work item AB#125 in project <Contoso> to GitHub pull request <owner/repo>#42
将工作项链接到提交 Link work item AB#312 in project <Contoso> to GitHub commit <owner/repo>@<sha>
将工作项关联到问题 Link work item AB#500 in project <Contoso> to GitHub issue <owner/repo>#10
从工作项创建GitHub分支 Create a GitHub branch named feature/checkout for work item 500 in project <Contoso> from repo <owner/repo> base branch main
在 PR 合并后更新链接的工作项状态 After PR <owner/repo>#42 merges, update linked work item AB#125 to Resolved
批量链接相关工作项 Link all active user stories in area path <Contoso\\Web> to GitHub PR <owner/repo>#42
查找未链接的工作项 List all closed work items in project <Contoso> from the last 30 days that have no linked GitHub pull request
汇总工作项的GitHub活动 Summarize all GitHub commits and pull requests linked to work item AB#312 in project <Contoso>
向 PR 添加 AB# 引用 Suggest an AB# reference line to add to PR <owner/repo>#42 description that links to work items 125 and 126
查看关联的 PR 状态 Show the review and check status of all GitHub pull requests linked to active user stories in project <Contoso>

Note

如果使用Visual Studio Code,请使用代理模式。 Azure DevOps MCP 服务器操作需要代理模式才能访问Azure DevOps数据和执行操作。

排查 AI 辅助链接问题

  • 如果提示未运行,请确认 AI 客户端中已启用代理模式。
  • 如果提示失败并出现访问错误,请验证帐户是否有权访问Azure DevOps项目和GitHub存储库。
  • 如果未创建链接,请将所有占位符(例如 <Contoso><owner/repo>,) <sha>替换为实际值,然后再次运行提示。
  • 如果批量提示失败,请先仅针对单个工作项重试,然后再用更小的批次重试。
  • 如果结果仍然与预期不匹配,请验证工作项开发部分和相关GitHub项目中的结果。

后续步骤