将 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 2020 支持与 GitHub.com 和 GitHub Enterprise Server 存储库集成。 如果要从 Azure DevOps 服务进行连接,请参阅将 Azure Board 连接到 GitHub。
将 Azure DevOps Server 项目连接到 GitHub Enterprise Server 存储库时,支持在 GitHub 提交和工作项的拉取请求之间进行链接。 使用 Azure Boards 来计划和跟踪工作时,可使用 GitHub Enterprise 进行软件开发。
注意
本地 Azure DevOps Server 2019 支持与 GitHub Enterprise Server 存储库集成。 如果要从 Azure DevOps 服务进行连接,请参阅将 Azure Board 连接到 GitHub。
先决条件
- 通过安装 Azure DevOps Server 2020.1.1 Patch 2,连接到 GitHub.com 存储库。 如果没有此修补程序,则只能连接到 GitHub Enterprise Server 存储库。
- 在 GitHub 组织或帐户上安装适用于 GitHub 的 Azure Boards 应用。
- 连接到 Azure Boards 或 Azure DevOps 项目。 如果没有项目,请创建一个。
- 你必须是项目集合管理员组和项目的参与者组的成员。 如果你创建了项目,则拥有权限。
- 你必须是要连接到的 GitHub Enterprise Server 的管理员。
身份验证选项
支持以下身份验证选项。
在 GitHub 中将 Azure DevOps 注册为 OAuth 应用
如果计划使用 OAuth 将 Azure DevOps Server 与 GitHub Enterprise Server 连接,则首先需要将应用程序注册为 OAuth 应用。 有关详细信息,请参阅创建 OAuth 应用。
注册 Azure DevOps Server
登录到 GitHub Enterprise Server 的 Web 门户。
选择“设置”>“开发人员设置”>“Oauth 应用”>“新建 OAuth 应用”。
输入信息,注册 Azure DevOps Server 应用程序。
对于主页 URL,请指定项目集合的公共 URL。 打开 Azure DevOps 管理控制台并查看“应用程序层”节点时,可以找到此 URL。
对于授权回调 URL,请使用以下模式构造 URL。
{Azure DevOps Server Public Url}/{Collection Name}/_admin/oauth2/callback
例如:
http://contoso/DefaultCollection/_admin/oauth2/callback
https://tfs.contoso.com/MyCollection/_admin/oauth2/callback
选择注册应用程序。
将显示一个页面,为已注册的 OAuth 应用程序提供“客户端 ID”和“客户端密码”。
在 Azure DevOps Server 中注册 OAuth 配置
登录到 Azure DevOps Server 的 Web 门户。
将 GitHub Enterprise OAuth 配置添加到 Azure DevOps Server 集合。
选择“管理员设置”>“Oauth 配置”>“添加 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 或更高版本。
可将多达 100 个 GitHub 存储库连接到一个 Azure Boards 项目。 此限制无法进行更改。
打开 Azure DevOps Server 的 Web 门户。
选择 Azure DevOps 徽标以打开“项目”,然后选择为连接到 GitHub Enterprise 存储库而配置的 Azure Boards 项目。
选择“项目设置”>“GitHub 连接”。
如果是第一次从项目建立连接,请选择要用于建立连接的身份验证方法:
- 个人访问令牌,有关详细信息,请参阅使用个人访问令牌进行连接。
- 用户名和密码,请参阅使用用户名和密码进行连接。
否则,请选择“新建连接”,然后从“新建连接”对话框中选择身份验证方法。
选择项目设置”>“GitHub 连接”>“连接 GitHub Enterprise 帐户”。
或者,如果使用这些凭据,请选择个人访问令牌或用户名和密码。
使用个人访问令牌连接
若要创建 PAT,请参阅创建个人访问令牌。
提示
创建 GitHub PAT 时,请确保包含以下范围:
repo, admin:repo_hook, read:user, user:email
。输入 GitHub Enterprise Server 的 URL 以及该服务器识别的个人访问令牌凭据。 然后选择“连接”。
使用用户名和密码连接
- 输入 GitHub Enterprise Server 的 URL 以及该服务器识别的管理员帐户凭据。 然后选择连接。
该对话框列出了你拥有 GitHub 管理权限的所有存储库。 可以在我的和全部之间切换以确定是否显示其他存储库,然后勾选要添加的存储库。 完成操作后,选择“保存”。
要首次从 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
- 用户名加上密码
Azure DevOps Server 2020
不适用
- PAT
- 用户名加上密码
Azure DevOps Server 2019
不适用
- OAuth
- PAT
- 用户名加上密码
注意
通过适用于 GitHub 的 Azure Boards 应用,Azure Boards 和 Azure DevOps Services 与 GitHub.com 和 GitHub Enterprise Server 存储库集成。 Azure DevOps Server 2019 及更高版本仅支持与 GitHub Enterprise Server 存储库集成。 不支持与其他 Git 存储库集成。
解决访问问题
当与 GitHub 的 Azure Boards 连接不再具有访问权限时,它会在用户界面中显示带有红色 X 的警报状态。 将鼠标悬停在警报上,该警报指示凭据不再有效。 为了更正此问题,请删除连接,并重新创建一个新连接。
当与 GitHub 的 Azure Boards 连接不再具有访问权限时,它会在用户界面中显示带有红色 X 警报状态,其中有一个工具提示,例如,无法连接到 GitHub。
请考虑以下解决方案:
如果连接使用的是 OAuth:
Azure Boards 应用程序对其中一个存储库的访问被拒绝。
GitHub 可能不可用/无法访问。 这种不可用性可能是由于服务中断或本地基础结构/网络问题导致的。 可以从以下链接检查服务状态:
删除并重新创建与 GitHub 存储库的连接。 重新创建连接会导致 GitHub 提示重新授权 Azure Boards。
如果连接使用的是 PAT:
PAT 可能已吊销,或者所需的权限范围已更改且权限不足。
用户可能已丢失 GitHub 存储库的管理员权限。
重新创建 PAT,并确保令牌的范围包含所需的权限:
repo, read:user, user:email, admin:repo_hook
。
更新选定的工作项类型的 XML 定义
如果你的组织使用托管 XML 或本地 XML 流程模型来自定义工作跟踪体验,并且你想要链接到工作项表单中“开发”部分的 GitHub 链接类型并进行查看,必须更新工作项类型的 XML 定义。
例如,如果要将用户情景和 bug 链接到 GitHub 提交,并从开发部分拉取请求,需要更新用户情景和 bug 的 XML 定义。
按照托管 XML 流程模型中提供的任务顺序,更新 XML 定义。 对于每个工作项类型,找到 Group Label="Development"
部分,并在以下代码语法中添加以下两行,用来支持外部链接类型:GitHub 提交和 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>