連線 Azure DevOps Server 至 GitHub (內部部署)

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

當您將 Azure DevOps Server 專案連線至 GitHub 存放庫時,支援在 GitHub 認可與提取要求之間連結至工作專案。 您可以使用 GitHub 進行軟體開發,同時使用 Azure Boards 來規劃和追蹤您的工作。

注意

內部部署 Azure DevOps Server 2020 支援與 GitHub.com 和 GitHub Enterprise Server 存放庫整合。 如果您想要從 Azure DevOps Services 連線,請參閱 連線 Azure Boards 至 GitHub

當您將 Azure DevOps Server 專案與 GitHub Enterprise Server 存放庫連線時,支援在 GitHub 認可與提取要求之間連結至工作專案。 您可以使用 GitHub Enterprise 進行軟體開發,同時使用 Azure Boards 來規劃和追蹤您的工作。

注意

內部部署 Azure DevOps Server 2019 支援與 GitHub Enterprise Server 存放庫整合。 如果您想要從 Azure DevOps Services 連線,請參閱 連線 Azure Boards 至 GitHub

必要條件

  • 連線 安裝 Azure DevOps Server 2020.1.1 Patch 2,以 GitHub.com 存放庫。 如果沒有此修補程式,您就只能連線到 GitHub Enterprise Server 存放庫。
  • 在 GitHub 組織或帳戶上安裝適用於 GitHub 的 Azure Boards 應用程式。
  • 連線 至 Azure Boards 或 Azure DevOps 專案。 如果您還沒有專案, 請建立一個專案
  • 您必須是專案集合 管理員 istrators 群組和項目參與者群組的成員 如果您已建立專案,則您具有許可權。
  • 您必須是所連線之 GitHub Enterprise Server 的系統管理員。

驗證選項

支援下列驗證選項。

注意

Azure DevOps Server 2020 不支援 OAuth。

在 GitHub 中將 Azure DevOps 註冊為 OAuth 應用程式

如果您打算使用 OAuth 將 Azure DevOps Server 與您的 GitHub Enterprise Server 連線,您必須先將應用程式註冊為 OAuth 應用程式。 如需詳細資訊,請參閱 建立 OAuth 應用程式

註冊 Azure DevOps Server

  1. 登入 GitHub Enterprise 伺服器的入口網站。

    Screenshot of sign in for GitHub Enterprise Server.

  2. 選取 [設定> 開發人員設定>Oauth Apps>新增 OAuth 應用程式]。

    Screenshot showing sequence for getting to New OAuth App screen.

  3. 輸入資訊以註冊 Azure DevOps Server 應用程式。

    Screenshot of Azure DevOps Server project registration.

    針對首頁 URL,指定專案集合的公用 URL。 當您開啟 Azure DevOps 管理員 istration Console 並檢視應用層節點時,可以找到此 URL。

    Screenshot of Azure DevOps Server Administration Console, Application Tier.

    針對授權回 呼 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

  4. 選取 [ 註冊應用程式]。

  5. 隨即會出現一個頁面,提供 您已註冊 OAuth 應用程式的用戶端識別碼客戶端密碼

    Screenshot of Client ID and Client Secret for your registered OAuth application.

在 Azure DevOps Server 中註冊 OAuth 組態

  1. 登入 Azure DevOps Server 的入口網站。

  2. 將 GitHub Enterprise Oauth 組態新增至您的 Azure DevOps Server 集合。

  3. 選取 [管理員 設定>Oauth 組態>新增 Oauth 組態。

    Screenshot showing step sequence to add OAuth configuration.

  4. 輸入您的資訊,然後選取 [ 建立]。

    Screenshot of OAuth configuration dialog.

連線 Azure DevOps Server 至 GitHub Enterprise Server

您最多可以將 250 個 GitHub 存放庫連線到 Azure Boards 專案。

注意

連線 至超過 100 個 GitHub 存放庫需要 Azure DevOps Server 2020.1 更新或更新版本。
連線 至 GitHub.com 存放庫需要 Azure DevOps Server 2020.1.1 Patch 2 或更新版本。

您最多可以將 100 個 GitHub 存放庫連線到 Azure Boards 專案。 此限制無法變更。

  1. 開啟 Azure DevOps Server 的入口網站。

  2. 選取 Azure DevOps 標誌以開啟 Projects,然後選擇您想要設定以連線到 GitHub Enterprise 存放庫的 Azure Boards 專案。

  1. 選取 [項目設定>][GitHub 連線]。

    Screenshot of open Project Settings>GitHub connections.

  2. 如果這是第一次從專案建立連線,請選擇您想要用來建立連線的驗證方法:

    Screenshot of first time connecting with GitHub credentials.

    否則,請選取 [新增連線],然後從 [新增 連線] 對話框中選取您的驗證方法。

  1. 選取 [項目設定>][GitHub 連線> 連線 您的 GitHub Enterprise 帳戶。

    Screenshot of Project settings, selected Integrations.

    或者,如果您使用這些認證,請選擇 個人存取令牌使用者名稱和密碼

使用 OAuth 連線

選擇您在 Azure DevOps Server 中註冊 OAuth 設定的步驟 4 中所設定的組態。 然後,選取 [連線]。

Screenshot fo New GitHub Enterprise connection, OAuth dialog.

使用個人存取令牌 連線

  1. 若要建立 PAT,請參閱 建立個人存取令牌

    提示

    當您建立 GitHub PAT 時,請確定您包含下列範圍: repo, admin:repo_hook, read:user, user:email

  2. 輸入 GitHub Enterprise 伺服器的 URL,以及 該伺服器所辨識的個人存取令牌認證 。 然後選取 [連線]。

Screenshot of sign in with PAT.

使用使用者名稱和密碼 連線

  1. 輸入 GitHub Enterprise 伺服器的 URL,以及該伺服器所辨識的系統管理員帳戶認證。 然後選擇 [連線]。

Screenshot of sign in with username and password.

  1. 對話框會列出您擁有 GitHub 系統管理許可權的所有存放庫。 您可以在 MineAll 之間切換,以判斷是否有其他項目出現,然後檢查您要新增的。 完成時,請選擇 [ 儲存 ]。

    Screenshot of repositories to select to add.

  2. 若要第一次從 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 連線不再具有存取權時,它會在具有 red-X 的使用者介面中顯示警示狀態。 將滑鼠停留在警示上,指出認證不再有效。 若要更正問題,請移除連線並重新建立新的連線。

Screenshot of failed connection.

當與 GitHub 的 Azure Boards 連線不再具有存取權時,它會在使用者介面中顯示警示狀態,其中包含具有工具提示的 red-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 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>  

下一步