将 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。
先决条件
- 与 GitHub 集成:
- 通过安装 Azure DevOps Server 2020.1.1 Patch 2,连接到 GitHub.com 存储库。 如果没有此修补程序,则只能连接到 GitHub Enterprise Server 存储库。
- 在 GitHub 组织或帐户上安装适用于 GitHub 的 Azure Boards 应用。
- 项目连接:连接到 Azure Boards 或 Azure DevOps 项目。 如果没有项目,请创建一个。
- 权限:
身份验证选项
支持以下身份验证选项。
在 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 凭据进行连接。
否则,请选择“新建连接”,然后从“新建连接”对话框中选择身份验证方法。
选择 项目设置>GitHub 连接>连接 GitHub Enterprise 帐户 或从我们不建议使用的其他身份验证选项中进行选择。
使用个人访问令牌连接
若要创建 PAT,请参阅创建个人访问令牌。
提示
创建 GitHub PAT 时,请确保包含以下范围:
repo, admin:repo_hook, read:user, user:email
。输入 GitHub Enterprise Server 的 URL 以及该服务器识别的个人访问令牌凭据。 然后选择“连接”。
使用 GitHub 凭据进行连接
- 输入 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
- GitHub 凭据
Azure DevOps Server 2020
不适用
- PAT
- GitHub 凭证
Azure DevOps Server 2019
不适用
- OAuth
- PAT
- GitHub 认证信息
注意
通过适用于 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
。 有关详细信息,请参阅有关使用 PAT 的最佳实践。
更新选定的工作项类型的 XML 定义
如果你的组织使用托管 XML 或本地 XML 进程模型自定义工作跟踪,并且想要将 GitHub 链接类型集成到工作项表单的开发部分,则必须更新相应工作项类型的 XML 定义。
例如,若要将用户情景和 bug 链接到 GitHub 提交,并在工作项表单的开发部分中拉取请求,必须更新这些工作项类型的 XML 定义。
若要修改 XML 定义,请执行托管 XML 进程模型中概述的步骤。 对于每个工作项类型:
- 找到
Group Label="Development"
部分。 - 若要支持外部链接类型、 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>