将 Azure DevOps Server 连接到 GitHub(本地)

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019

将 Azure DevOps Server 项目连接到 GitHub 存储库时,支持在 GitHub 提交和工作项的拉取请求之间进行链接。 使用 Azure Boards 来计划和跟踪工作时,可使用 GitHub 进行软件开发。

注意

Azure DevOps Server 支持与 GitHub.com 和 GitHub Enterprise Server 存储库集成。 若要从 Azure DevOps Services 进行连接,请参阅 将 Azure Boards 连接到 GitHub

先决条件

类别 要求
权限 - 项目集合管理员 组的成员 和项目 参与者组的成员。 如果你创建了项目,则拥有权限。
- 连接到的 GitHub Enterprise Server 的管理员
项目成员身份 项目成员.
与 GitHub 集成 - Azure DevOps Server 2020.1.1 补丁 2。 如果没有此修补程序,则只能连接到 GitHub Enterprise Server 存储库。
- GitHub 组织或帐户上安装的适用于 GitHub 的 Azure Boards 应用

身份验证选项

支持以下身份验证选项:

注意

Azure DevOps Server 2020 不支持 OAuth。

将 Azure DevOps Server 连接到 GitHub Enterprise Server

可将多达 250 个 GitHub 存储库连接到一个 Azure Boards 项目。

注意

  • 需要 Azure DevOps Server 2020.1 更新或更高版本才可连接到 100 多个 GitHub 存储库。
  • 连接到 GitHub.com 存储库需要 Azure DevOps Server 2020.1.1 Patch 2 或更高版本。
  1. 打开 Azure DevOps Server 的 Web 门户。

  2. 选择 Azure DevOps 徽标以打开“项目”,然后选择为连接到 GitHub Enterprise 存储库而配置的 Azure Boards 项目。

  3. 选择“项目设置”>“GitHub 连接”

    打开项目设置、GitHub 连接的屏幕截图。

  4. 如果这是你第一次从项目建立连接,请选择要用于建立连接的身份验证方法:

    首次使用 GitHub 凭据进行连接的屏幕截图。

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

使用 GitHub 个人访问令牌连接 Azure DevOps Server

  1. 若要创建 GitHub PAT,请参阅 “创建 GitHub PAT”。

    提示

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

  2. 输入 GitHub Enterprise Server 的 URL 以及该服务器识别的个人访问令牌凭据。 然后选择“连接”

    使用 GitHub PAT 登录的屏幕截图。

使用 GitHub 凭据连接 Azure DevOps Server

  1. 输入 GitHub Enterprise Server 的 URL 以及该服务器识别的管理员帐户凭据。 然后选择连接

    使用 GitHub 凭据登录的屏幕截图。

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

    选择要添加的存储库的屏幕截图。

  3. 要首次从 Azure Boards 连接到 GitHub 帐户或组织,还需要安装适用于 GitHub 的 Azure Boards 应用。 按照确认连接中概述的过程完成集成。

解决连接问题

Azure Boards-GitHub 集成依赖于各种身份验证协议来支持连接。 如果更改用户的权限范围或身份验证凭据,可能会导致吊销已连接到 Azure Boards 的 GitHub 存储库。

若要大致了解适用于 GitHub 的 Azure Boards 应用支持的集成,请参阅 Azure Boards-GitHub 集成

当与 GitHub 的 Azure Boards 连接不再具有访问权限时,它会在用户界面中显示带有红色 X 的警报状态。 将鼠标悬停在警报上,该警报指示凭据不再有效。 为了更正此问题,请删除连接,并重新创建一个新连接。

失败的连接的屏幕截图。

请考虑以下解决方案:

  • 如果连接使用的是 OAuth

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

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

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

  • 如果连接使用 GitHub PAT:

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

    • 用户可能丢失了 GitHub 存储库的管理权限。

      重新创建 GitHub PAT 并确保令牌的范围包括所需的权限: repo, read:user, user:email, admin:repo_hook

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

如果你的组织使用托管 XML 或本地 XML 进程模型自定义工作跟踪,并且想要将 GitHub 链接类型集成到工作项表单的开发部分,则必须更新相应工作项类型的 XML 定义。

例如,若要将用户情景和 bug 链接到 GitHub 提交,并在工作项表单的开发部分中拉取请求,必须更新这些工作项类型的 XML 定义。

若要修改 XML 定义,请执行托管 XML 进程模型中概述的步骤。 对于每个工作项类型:

  1. 找到 Group Label="Development" 部分。
  2. 若要支持外部链接类型、 GitHub 提交GitHub 拉取请求,请添加以下代码行:

此集成可直接从 Azure Boards 中的工作项无缝跟踪 GitHub 活动。

             <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>  

后续步骤