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 定义。
使用 AB# 从 GitHub 链接到 Azure Boards 工作项
使用 GitHub 文本中的 AB# 提及将其链接到 Azure Boards 工作项。
若要创建链接:
- 将
AB#{ID}添加到提交消息、拉取请求描述或问题描述中。 - 推送提交,或保存拉取请求或议题。
- 打开工作项以确认链接显示在 “开发 ”部分中。
在评论中或在拉取请求标题中使用 AB#ID 不会为工作项创建链接。
AB#{ID}
例如,AB#125 链接到工作项 ID 125。
还可以从提交或拉取请求文本转换工作项。 Azure Boards可识别{state}或{state category}关键字(例如fix,fixes)以及fixed,然后将该转换应用到AB#后面的引用。
例如,当拉取请求说明包含有效的状态名称时, Closed AB#1234系统将引用的工作项更新为该特定状态。 如果无法直接识别状态名称,Azure Boards尝试将其与工作流类别(如 Resolved 或 Completed)匹配。 如果找到匹配项,则工作项将转换为在该类别下定义的第一个可用状态。
默认情况下,使用 fix、fixes 或 fixed 引用的工作项会转换为与 已解析 类别关联的第一个状态。 如果当前进程中不存在此类状态,系统将工作项转换为 “已完成 ”类别中的第一个状态。
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分支
若要直接从工作项创建GitHub分支,请使用以下步骤:
在开发板中,找到要用于创建GitHub分支的工作项。
选择
工作项操作>新建 GitHub 分支。
在 创建GitHub分支对话框中,输入分支名称。 选择GitHub存储库和基分支。
选择 创建。
Azure Boards在指定的GitHub存储库中创建分支,并将其链接到工作项。 有关详细信息,请参阅 Azure Boards-GitHub 集成。
将工作项链接添加到 GitHub 分支、提交或拉取请求
打开工作项并转到 “开发 ”区域。
选择“添加链接”。 从每个下拉菜单中,选择link 类型、GitHub存储库和GitHub拉取请求。 可以在存储库中搜索和向下钻取,以查找并选择特定的拉取请求或提交,而无需复制和粘贴 URL。
选择“添加链接”。
Azure Boards 会检查以确保你输入了有效的链接。 链接到的GitHub存储库必须连接到Azure Boards项目,否则验证将失败。
Note
如果使用 Azure DevOps Server 和 GitHub Enterprise Server,则完成 AB# 链接时存在延迟。 该过程使用“推拉”设计,每小时从 GitHub 事件中拉取提交、PR 和问题的增量更改。
自动链接更新
多个事件自动更新工作项窗体上的链接,因此无需手动创建它们。 这些事件包括:
| GitHub事件 | Action |
|---|---|
| 链接到分支 | 当从分支创建拉取请求时,它会自动链接到工作项。 |
| 合并提交 | 合并拉取请求后,生成的合并提交会自动链接到工作项。 |
| 删除分支 | 如果删除分支(通常在合并后),则其链接会自动从工作项中删除。 |
查看或打开“开发”部分中的链接
工作项窗体中的“开发”部分使用
GitHub 图标列出了创建的指向 GitHub 提交和拉取请求的链接。
选择链接以在 GitHub 中打开提交或拉取请求。
GitHub拉取请求洞察
“开发”部分中的链接GitHub拉取请求显示额外的状态详细信息。 无需在GitHub中打开拉取请求即可评估进度。
拉取请求洞见的先决条件
要查看拉取请求见解,请转到 GitHub 中的 Azure Boards 应用,并接受更新的权限以对检查进行读写访问。
查看拉取请求状态详细信息
打开一个与 GitHub 拉取请求相关联的工作项。
在 “开发 ”部分中,找到链接的拉取请求。 拉取请求链接旁边会显示以下状态详细信息:
- 草稿状态:显示拉取请求是否仍然是草稿。
- 审阅状态:显示拉取请求是否需要评审、批准还是已请求更改。
- 检查状态:显示 CI 检查是通过、失败还是挂起。
将鼠标悬停在状态指示器上以查看更多详细信息,或选择拉取请求链接以直接在GitHub中打开它。
使用 ! 提及GitHub拉取请求
使用 ! 提及直接从任何工作项富文本字段或讨论评论中引用和讨论 GitHub 拉取请求。 在文本字段中键入 ! 时,将显示一个选取器,可用于从连接的存储库中搜索并选择GitHub拉取请求。 所选拉取请求作为可单击链接插入。
使用此功能可以轻松地在工作项说明、验收条件或讨论线程中引用相关的拉取请求,而无需手动复制 URL。
查看 YAML 管道的生成状态(在生成中集成)
使用 Azure Pipelines YAML 构建托管在 GitHub 存储库中的代码时,可以在关联的工作项上自动生成 在生成时集成 链接。 此功能为GitHub存储库提供构建可追溯性,实现与Azure Repos相同的使用体验。
启用此功能:
打开 YAML 管道,选择“
更多操作”,然后选择“ 设置”。在管道设置对话框中,启用自动链接此生成中的新工作项。
生成完成后,在生成中集成链接会自动出现在每个相关工作项的“开发”部分,让你的团队获得从工作项到生成的完整可追溯性。
有关配置此设置的详细信息,请参阅 配置管道以支持工作跟踪。
在板上查看GitHub对象
在看板上启用 GitHub 注释后,您可以快速打开已链接的 GitHub 提交、拉取请求或问题,以查看更多详细信息。 有关详细信息,请参阅 自定义卡片。
使用 AI 链接和管理GitHub工作
如果配置 Azure DevOps MCP 服务器,则可以使用自然语言描述GitHub到工作项链接任务,而不是手动导航工作项表单。
将这些提示用作方案示例。 支持的操作因配置的工具集、扩展版本和权限而异。
某些提示可能会返回指导,而不是执行写入操作,或者可能需要多个提示,具体取决于已启用的 MCP 工具。
在运行提示词之前,请将诸如 <Contoso>、<owner/repo> 和 <sha> 之类的占位符替换为您的实际值。
使用此快速运行和验证流:
- 从表中运行一个提示。
- 查看所执行操作的响应。
- 打开工作项,并在 “开发 ”部分中确认结果。
- 打开相关GitHub项目并确认预期的链接或更新。
首先尝试以下提示:
Link work item AB#125 in project <Contoso> to GitHub pull request <owner/repo>#42Link 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项目中的结果。