通过


将Azure Boards连接到 GitHub (云)

Azure DevOps Services

使用 GitHub.com 存储库进行软件开发和Azure Boards项目来规划和跟踪工作。 将您的项目和存储库连接起来,以便在Azure Boards中将GitHub的提交和拉取请求关联到您的工作项。

Note

Azure Boards和Azure DevOps服务支持与 GitHub.com 和 GitHub Enterprise Server 存储库的集成。 如果您希望从本地部署的 Azure DevOps Server 进行连接,请参阅 将 Azure DevOps Server 连接到 GitHub Enterprise Server

Prerequisites

Category Requirements
权限 - 项目集合管理员 组的成员 如果创建了项目,则你具有权限。
GitHub仓库的 - Administratorowner。 只要你是这些存储库的管理员,就可以连接到多个GitHub存储库。
项目成员身份 项目成员.

身份验证选项

您要连接的GitHub平台支持以下身份验证选项。

GitHub.com

GitHub Enterprise Server

Note

如果选择使用 PAT 连接GitHub,请在 GitHub 帐户上为 PAT 配置单一登录(SSO)。 必须使用此配置,才能从启用了安全断言标记语言 (SAML) SSO 身份验证的组织中检索存储库列表。

将Azure Boards连接到GitHub存储库

  1. 登录到您的项目(https://dev.azure.com/{Your_Organization/Your_Project})。

  2. 选择 项目设置>GitHub 连接

    项目设置截图:打开的GitHub连接。

  3. 如果是你第一次从项目进行连接,请选择连接GitHub帐户以使用GitHub帐户凭据。

    首次通过 GitHub 凭证进行连接的截图。

    否则,请选择 新建连接,然后从新建连接对话框中选择身份验证方法。

    使用 GitHub 帐户进行连接时,请使用GitHub凭据进行身份验证。 若要使用 PAT,请参阅 使用 PAT 添加GitHub连接。 若要连接到 GitHub Enterprise Server,请参阅 GitHub 中的 Register Azure DevOps 作为 OAuth 应用

使用GitHub凭证添加GitHub连接

最多可将 1,000 个GitHub存储库连接到Azure Boards项目。

  1. 如果是第一次从Azure Boards连接到GitHub,请使用GitHub凭据登录。 选择你作为存储库管理员的帐户。

  2. 选择要连接的GitHub帐户或组织。 仅列出了你拥有的或作为其管理员的组织。

    如果组织的所有存储库都已连接到Azure Boards,则显示以下消息:

    没有更多存储库需要连接的消息的屏幕截图。

  3. 输入GitHub凭据。 如果已启用双重身份验证,请输入由 GitHub 发送的身份验证代码,然后选择 Verify。 否则,系统会自动识别GitHub组织,因为你的GitHub帐户与你的Azure DevOps服务帐户相关联。

添加GitHub存储库

经过身份验证后,便可选择要连接的存储库。

  1. Add GitHub 存储库 对话框会自动显示你作为管理员的所有 GitHub.com 存储库,并在所选组织中选择它们。 取消选择不想包含在集成中的任何存储库。

    Screenshot 显示GitHub repos.

    Tip

    为了避免意外的AB#提及链接,我们建议在单个 Azure DevOps 组织内,将 GitHub 仓库连接到项目中。 将同一GitHub存储库连接到多个Azure DevOps组织中的项目可能会导致问题。 有关详细信息,请参阅 排查 GitHub 和 Azure Boards 集成问题

    如果所有存储库都已连接到当前组织或其他组织,则显示以下消息:

    没有更多存储库需要连接的消息的屏幕截图。

  2. 进行选择后,选择“ 保存”。

确认连接

  1. 查看 GitHub 页面后,选择 批准、安装和授权

    截图显示确认中的GitHub存储库。

  2. 提供GitHub凭据进行确认。

  3. 完成后,您应该能看到与所选存储库的新连接列表。

已连接存储库的列表的屏幕截图。

若要更改配置或管理 GitHub 的 Azure Boards 应用,请参阅 Change 存储库对 Azure Boards 的访问权限。

使用 PAT 添加GitHub连接

Important

请考虑使用更安全的Microsoft Entra令牌而不是高风险的个人访问令牌。 有关详细信息,请参阅 减少 PAT 使用情况。 查看 身份验证指南 ,以根据需要选择正确的身份验证机制。

建议使用 GitHub 帐户凭据连接到GitHub存储库。

Tip

创建GitHub PAT 时,请确保包含以下范围:repo, read:user, user:email, admin:repo_hook

  1. 选择“个人访问令牌”

    GitHub 新建连接对话框的屏幕截图,选择“个人访问令牌”。

    若要创建 GitHub PAT,请转到 GitHub 开发人员设置>个人访问令牌

  2. 输入 PAT 并选择连接

    显示输入的 PAT 的屏幕截图。

  3. 按照本文前面的选择存储库中概述的过程,选择要连接到项目的存储库。

  4. 如果是第一次从Azure Boards连接到GitHub帐户或组织,请安装GitHub Azure Boards应用。 确认本文前述的连接

在 GitHub 中注册Azure DevOps作为 OAuth 应用

若要使用 OAuth 将Azure DevOps连接到 GitHub Enterprise Server,请先将应用程序注册为 OAuth 应用。 有关详细信息,请参阅创建 OAuth 应用

注册Azure DevOps服务

  1. 登录到 GitHub Enterprise 服务器的 Web 门户。

    GitHub Enterprise 服务器的登录界面截图。

  2. 打开“设置”>“开发人员设置”>“Oauth 应用”>“新建 OAuth 应用”

    显示“新建 OAuth 应用”序列的屏幕截图。

  3. 输入注册信息。

    对于主页 URL,请指定组织的组织 URL
    对于授权回调 URL,请使用以下模式构造 URL。

    {Azure DevOps Services Organization URL}/_admin/oauth2/callback

    例如:

    https://dev.azure.com/fabrikam/_admin/oauth2/callback

    显示要注册的应用的屏幕截图。

  4. 选择注册应用程序

  5. 将显示已注册的 OAuth 应用程序的“客户端 ID”和“客户端密码”

    已注册 OAuth 应用程序的客户端 ID 和客户端密钥的屏幕截图。

在 Azure DevOps 服务中注册 OAuth 配置

  1. 登录到用于Azure DevOps服务的 Web 门户。

  2. 将GitHub企业版 OAuth 配置添加到组织。

  3. 在“组织设置”中,选择“Oauth 配置”>“添加 Oauth 配置”

    打开“组织设置”、OAuth 配置的屏幕截图。

  4. 输入你的信息,然后选择“创建”

    “OAuth 配置”对话框。

将 Azure DevOps 服务连接到 GitHub Enterprise Server

Important

若要将 Azure DevOps 服务连接到 GitHub Enterprise Server,请确保可从 Internet 访问 GitHub Enterprise Server。 验证Azure DNS是否可以解析GitHub企业服务器名称,并且防火墙是否允许从 Azure 数据中心 IP 地址进行访问。 若要确定 IP 地址范围,请参阅 Microsoft Azure 数据中心 IP 范围。 以下是连接问题的常见错误消息:

远程名称无法解析:“github-enterprise-server.contoso.com”

如果遇到此错误,请检查服务器的可访问性。 有关详细信息,请参阅 Azure DNS FAQ

  1. 对于首次连接,请选择 Project 设置>GitHub连接>GitHub Enterprise Server

    首次连接,选择GitHub Enterprise Server。

    或者,从 New GitHub connection 对话框中,选择 GitHub Enterprise Server

    “新建GitHub连接”对话框的Screenshot,选择GitHub Enterprise Server.

  2. 选择身份验证方法。

    显示身份验证方法对话框的屏幕截图。

    使用 OAuth 连接

    选择在 Azure DevOps Services 中注册 OAuth 配置的步骤 4 中设置的配置,然后选择 Connect

    新的GitHub企业连接,OAuth 连接对话框.

    使用个人访问令牌连接

    输入GitHub企业服务器的 URL 以及该服务器识别的个人访问令牌凭据。 然后选择连接

    新 GitHub 企业连接的截图,个人访问令牌连接对话框。

    使用GitHub凭据登录

    输入GitHub企业服务器的 URL 以及该服务器识别的管理员帐户凭据,然后选择 Connect

    新GitHub企业连接屏幕上的截图,显示用户名连接对话框。

  3. 该对话框列出了你拥有GitHub管理权限的所有存储库。 可以在我的全部之间切换,以确定是否出现其他项,然后选择要添加的项。 完成后,请选择保存

    所列存储库的屏幕截图。

    Tip

    只能与一个GitHub组织下定义的存储库建立连接。 若要将项目连接到另一个GitHub组织中定义的其他存储库,必须添加另一个连接。

  4. 如果这是你第一次从 Azure Boards 连接到GitHub帐户或组织,则还要安装GitHub Azure Boards应用。 确认本文前述的连接

解决连接问题

Azure Boards GitHub集成使用各种身份验证协议来维护连接。 对用户权限范围或身份验证凭据的更改可以撤销连接到Azure Boards的GitHub存储库。

有关 GitHub Azure Boards 应用支持的集成概述,请参阅 Azure Boards-GitHub 集成

支持的身份验证选项

以下支持的身份验证选项取决于要连接到的GitHub平台:

平台

GitHub.com

GitHub Enterprise Server

Azure DevOps Services

  • GitHub.com 用户帐户
  • 个人访问令牌 (PAT)
  • OAuth
  • PAT
  • GitHub凭据

Azure DevOps Server 2020

不適用

  • PAT
  • GitHub凭据

Note

GitHub集成支持:

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

授予 Azure Boards 组织访问权限

如果Azure Boards与GitHub之间的集成未按预期工作,请验证你是否授予了组织访问权限。

  1. 在 GitHub Web 门户中,从配置文件菜单打开 Settings
    打开的个人资料的屏幕截图,选择“设置”。

  2. Integrations>Authorized OAuth Apps>Azure Boards 下选择 Applications

  3. 组织访问权限下,解决可能出现的所有问题。 选择“授予”,向任何显示为具有“挂起的访问请求”的组织授予访问权限。

    “组织访问权限”的屏幕截图,其中显示了一些没有访问权限的组织。

解决访问问题

当与GitHub的Azure Boards连接失去访问权限时,用户界面中会显示一个红色 X 的警报状态。 将鼠标悬停在警报上,会发现凭据不再有效。 要解决此问题,请删除连接并创建新的连接。

失败的连接的屏幕截图。

要解决此问题,请考虑以下各项:

  • 如果连接使用的是 OAuth

    • Azure Boards应用程序对其中一个存储库的访问被拒绝。

    • GitHub可能不可用/无法访问。 这种不可用性可能是由于服务中断或本地基础结构/网络问题导致的。 可以从以下链接检查服务状态:

      删除并重新创建与GitHub存储库的连接。 重新创建的连接会导致GitHub提示重新授权Azure Boards。

  • 如果连接使用的是 PAT:

    • PAT 已被吊销,或是所需的权限范围已更改且不足。

    • 用户可能对GitHub存储库没有管理员权限。

      重新创建个人访问令牌 (PAT),并确保权限范围包含所需的权限:repo, read:user, user:email, admin:repo_hook。 有关详细信息,请参阅有关使用 PAT 的最佳实践

解决GitHub企业服务器连接中断问题

如果已从 Azure DevOps Server 迁移到具有现有 GitHub Enterprise Server 连接的 Azure DevOps Services,则现有连接可能无法按预期工作。 GitHub内的工作项提及可能会延迟或永远不会出现在Azure DevOps服务中,因为与GitHub关联的回调 URL 不再有效。 请考虑以下决议:

  • 重新创建连接:删除并重新创建与 GitHub Enterprise Server 存储库的连接。 请按照 从 Azure Boards 连接 文档中提供的步骤序列进行操作。

  • 修复 webhook URL:前往 GitHub 存储库的设置页面,然后编辑 Webhook URL,使其指向已迁移的 Azure DevOps 组织的 URL:https://dev.azure.com/{OrganizationName}/_apis/work/events?api-version=5.2-preview

连接到多个 Azure DevOps 组织

将GitHub存储库连接到多个Azure DevOps组织中的项目(例如 dev.azure.com/Contoso 和 dev.azure.com/Fabrikam)时,这可能会导致 AB# 提及出现意外结果。 工作项 ID 在 Azure DevOps 组织中并不唯一,因此 AB#12可以引用 Contoso 或 Fabrikam 中的工作项。 在提交消息或拉取请求中提及某一工作项时,两个组织均可能会尝试链接到具有匹配 ID 的工作项,从而造成混淆。

若要避免此问题,请将单个GitHub存储库连接到一个Azure DevOps组织。

Note

使用用于GitHub的 Azure Boards 应用进行连接时,该应用会阻止连接到多个组织。 如果GitHub存储库连接到错误的Azure DevOps组织,请联系该组织的所有者,在将存储库添加到正确的Azure DevOps组织之前删除连接。

更新选定的工作项类型的 XML 定义

如果您的组织使用托管 XML 或本地 XML 进程模型来自定义工作跟踪体验,并且需要在工作项表单的“开发”部分中链接和查看 GitHub 关联类型,请更新工作项类型的 XML 定义。

例如,若要将用户情景和 bug 链接到GitHub提交和拉取来自 Development 节的请求,请更新用户情景和 bug 的 XML 定义。

按照托管 XML 流程模型中提供的任务顺序,更新 XML 定义。 对于每个工作项类型,找到 Group Label="Development" 节,并在代码语法中添加以下两行以支持外部链接类型:GitHub CommitGitHub 拉取请求

             <ExternalLinkFilter Type="GitHub Pull Request" />  
             <ExternalLinkFilter Type="GitHub Commit" />  

更新后,该部分应如下所示。

<Group Label="Development">  
   <Control Type="LinksControl" Name="Development">  
      <LinksControlOptions ViewMode="Dynamic" ZeroDataExperience="Development" ShowCallToAction="true">  
         <ListViewOptions GroupLinks="false">   
         </ListViewOptions>  
         <LinkFilters>  
             <ExternalLinkFilter Type="Build" />  
             <ExternalLinkFilter Type="Integrated in build" />  
             <ExternalLinkFilter Type="Pull Request" />  
             <ExternalLinkFilter Type="Branch" />  
             <ExternalLinkFilter Type="Fixed in Commit" />  
             <ExternalLinkFilter Type="Fixed in Changeset" />  
             <ExternalLinkFilter Type="Source Code File" />  
             <ExternalLinkFilter Type="Found in build" />  
             <ExternalLinkFilter Type="GitHub Pull Request" />  
             <ExternalLinkFilter Type="GitHub Commit" />  
         </LinkFilters>  
      </LinksControlOptions>  
   </Control>  
</Group>  

FAQs

问:Azure DevOps中的某些用户具有GitHub标识。 是否需要将这些用户作为新GitHub用户添加到我的组织?

答:否。 要求用户退出登录,然后在一个新的浏览器会话中使用其GitHub凭据重新登录到组织。 此操作将建立其GitHub身份。

问:我是组织管理员,我启用了邀请GitHub用户的策略。 为什么无法邀请新GitHub用户?

答:更改设置后,注销Azure DevOps,然后使用新的浏览器会话中的GitHub凭据重新登录到组织(dev.azure.com/{organizationName}organizationName.visualstudio.com)。

问:我使用GitHub凭据登录,但为什么无法邀请GitHub用户?

答:只有组织或项目管理员才能邀请新用户加入组织。 你可能没有添加新用户所需的权限。 请与管理员协作以便获取所需的权限,或是要求对方为你添加用户。

问:GitHub企业用户是否能够免费访问Azure DevOps?

答:有关详细信息,请参阅 用户和权限管理常见问题解答/GitHub Enterprise

后续步骤

使用GitHub集成可以实现的功能

连接后,可以:

  • 使用 GitHub Copilot将 GitHub Copilot 与工作项结合使用来自动生成代码
  • 链接工作项:自动将提交、分支和拉取请求链接到工作项
  • 跟踪开发:直接从 Azure Boards 监视进度