Azure DevOps 服務
利用 GitHub.com 軟體開發和Azure Boards專案的資料庫來規劃和追蹤你的工作。 連結你的專案和倉庫,讓你的 GitHub 提交和 pull request 連結到你在 Azure Boards 的工作項目。
Note
Azure Boards 與 Azure DevOps 服務支援與 GitHub.com 及 GitHub Enterprise Server 倉庫的整合。 如果你想從本地的 Azure DevOps Server 進行連線,請參考 將 Azure DevOps Server 連接到 GitHub Enterprise Server。
Prerequisites
| Category | Requirements |
|---|---|
| 權限 | - 專案集合管理員 群組的成員, 如果您建立專案,您具有許可權。 - Administrator 或 擁有者 以連接到 GitHub 儲存庫。 只要你是多個 GitHub 倉庫的管理員,就可以連結這些倉庫。 |
| 專案成員資格 | 專案成員。 |
驗證選項
以下認證選項會根據你想連接的 GitHub 平台而定。
GitHub.com
GitHub Enterprise Server
- GitHub.com 使用者帳號(推薦)
- 個人存取權杖 (PAT)
- OAuth (慣用,需要註冊)
- PAT
- GitHub credentials
Note
如果你選擇用 PAT 連接 GitHub,請在你的 GitHub 帳號上設定 PAT 的單一登入(SSO)。 此設定必須從已啟用安全性判斷提示標記語言 (SAML) SSO 驗證的組織擷取存放庫清單。
將 Azure Boards 連結至 GitHub 儲存庫
登入您的專案 ()。
選擇 專案設定>GitHub connections。
如果你是第一次從專案連線,請選擇 Connect your GitHub account 以使用你的 GitHub 帳號憑證。
否則,請選擇 [ 新增連線],然後從 [ 新增連線 ] 對話框中選取您的驗證方法。
當你連接 GitHub 帳號時,請使用 GitHub 憑證來驗證。 要使用 PAT,請參見 使用 PAT 新增GitHub連線。 若要連接GitHub企業伺服器,請參見GitHub中的 註冊Azure DevOps作為 OAuth 應用程式。
新增一個 GitHub 連線,並使用 GitHub 憑證
你可以將最多 1,000 個 GitHub 倉庫連接到 Azure Boards 專案。
如果你是第一次從 Azure Boards 連接 GitHub,請用你的 GitHub 登入帳號登入。 請選擇您所屬的儲存庫管理員帳戶。
選擇你想連結的 GitHub 帳號或組織。 只會列出您擁有或身為系統管理員的組織。
如果一個組織的所有倉庫都已經連接到 Azure Boards,則會顯示以下訊息:
沒有更多存放庫可連線的訊息截圖。
輸入你的 GitHub 憑證。 如果你啟用了雙重驗證,請輸入GitHub寄出的驗證碼,並選擇Verify。 如果沒有,系統會自動辨識你的 GitHub 組織,因為你的 GitHub 帳號與你的 Azure DevOps 服務帳號有關聯。
新增 GitHub 倉庫
驗證之後,您可以選取您要連線的存放庫。
Add GitHub Repositories對話框會自動顯示並選擇你在所選組織中擔任管理員的所有 GitHub.com 儲存庫。 取消選取您不想包含在整合中的任何存放庫。
Tip
為避免意外的 AB# 提及連結,我們建議將 GitHub repo 連結到單一Azure DevOps組織內的專案。 將同一個 GitHub 倉庫連接到多個 Azure DevOps 組織的專案,可能會造成問題。 更多資訊請參見 故障排除GitHub與Azure Boards整合。
如果所有存放庫都已連線到目前或其他組織,則會顯示下列訊息:
沒有更多存放庫可連線的訊息截圖。
進行選取之後,請選取 [ 儲存]。
確認連線
請先檢閱顯示的 GitHub 頁面,然後選擇 批准、安裝及授權。
請提供你的 GitHub 憑證以確認。
完成後,您應該會看到已列出所選儲存庫的新連線。
已連線存放庫清單的螢幕快照。
若要更改設定或管理 Azure Boards 的 GitHub 應用程式,請參見 變更 Azure Boards 的儲存庫存取權限。
使用 PAT 新增 GitHub 連線
Important
考慮使用更安全的Microsoft Entra 令牌而非風險較高的個人存取令牌。 欲了解更多資訊,請參閱 減少PAT使用。 請參考 認證指引 ,選擇最適合您需求的認證機制。
我們建議使用你的 GitHub 帳號憑證來連結你的 GitHub 倉庫。
Tip
當你建立GitHub PAT 時,務必包含以下範圍:repo, read:user, user:email, admin:repo_hook。
選擇 [個人存取令牌]。
要建立GitHub PAT,請到 GitHub 開發者設定 > 個人存取權杖。
輸入 PAT,然後選取 [ 連線]。
顯示已輸入 PAT 的螢幕快照。
請依照本篇文章前面所述的選擇存放庫的步驟,選擇要連接至專案的存放庫。
如果是第一次從 Azure Boards 連接 GitHub 帳號或組織,請安裝 GitHub 的 Azure Boards 應用程式。 檢查本文中稍早介紹的連線。
將 Azure DevOps 註冊為 GitHub 中的 OAuth 應用程式
要使用 OAuth 將 Azure DevOps 與您的 GitHub Enterprise Server 連接,請先將該應用程式註冊為 OAuth 應用程式。 如需詳細資訊,請參閱 建立 OAuth 應用程式。
註冊 Azure DevOps Services
登入你的 GitHub 企業伺服器的網頁入口網站。
GitHub Enterprise伺服器登入頁面的截圖。 開啟 設定開發者設定Oauth 應用程式新增 OAuth 應用程式。
顯示新 OAuth 應用程式操作順序的螢幕快照。
輸入註冊資訊。
針對首頁 URL,指定您組織的組織 URL。
請使用以下模式來建構授權回呼 URL。{Azure DevOps Services Organization URL}/_admin/oauth2/callback例如:
https://dev.azure.com/fabrikam/_admin/oauth2/callback顯示要註冊之應用程式的螢幕快照。
選取 註冊應用程式。
您已註冊 OAuth 應用程式的用戶端識別碼和用戶端密碼隨即出現。
已註冊 OAuth 應用程式的用戶端識別碼和用戶端密碼螢幕快照。
將您的 OAuth 設定註冊到 Azure DevOps Services 中。
登入 Azure DevOps Services 的網頁入口。
將 GitHub Enterprise 的 Oauth 配置加入你的組織。
在 [組織設定] 中,選取 [Oauth 組態][新增 Oauth 組態]。
開啟組織設定、OAuth 設定的螢幕快照。
輸入您的資訊,然後選取 [ 建立]。
[OAuth 設定] 對話框。
Connect Azure DevOps Services to GitHub Enterprise Server
Important
要將 Azure DevOps 服務連接到您的 GitHub 企業伺服器,請確保您的 GitHub 企業伺服器能從網際網路存取。 確認 Azure DNS 是否能解析你的 GitHub 企業伺服器名稱,且防火牆是否允許從 Azure Data Center 的 IP 位址存取。 要確定 IP 位址範圍,請參見 Microsoft Azure 資料中心 IP 範圍。 線上問題的常見錯誤訊息如下:
無法解析遠端名稱:『github-enterprise-server.contoso.com』
如果您遇到此錯誤,請檢查伺服器的可存取性。 欲了解更多資訊,請參閱 Azure DNS FAQ。
首次連線選擇 Project settings>GitHub connections>GitHub Enterprise Server。
或者,從 New GitHub connection 對話框中,選擇 GitHub Enterprise Server。
選取驗證方法。
顯示驗證方法對話框的螢幕快照。
使用 OAuth 連線
選擇你在Azure DevOps服務註冊 OAuth 設定
步驟 4 中設定的設定,然後選擇 Connect 。
使用個人存取令牌連線
輸入你 GitHub 企業伺服器的網址,以及該伺服器識別的個人存取權杖憑證。 然後選擇 [ 連線]。
用GitHub憑證連線
輸入你GitHub企業伺服器的網址,以及該伺服器識別的管理員帳號憑證,然後選擇Connect。
對話框會列出你擁有 GitHub 管理權限的所有倉庫。 您可以在 Mine 和 All 之間切換,以查看是否有其他人的項目出現,然後選取您想新增的項目。 當完成時,選擇儲存。
列出的存放庫螢幕快照。
Tip
你只能連接到一個 GitHub 組織下定義的倉庫。 要將專案連接到其他 GitHub 組織中定義的其他倉庫,必須新增另一個連線。
如果你是第一次從 Azure Boards 連接 GitHub 帳號或組織,你也要安裝 GitHub 的 Azure Boards 應用程式。 檢查本文中稍早介紹的連線。
解決連線問題
Azure Boards-GitHub 整合使用各種認證協定來維持連線。 更改使用者的權限範圍或認證憑證,可能會撤銷與 Azure Boards 連結的 GitHub 倉庫。
關於GitHub Azure Boards應用程式支援的整合概述,請參閱Azure Boards-GitHub整合。
支援的驗證選項
以下支援的認證選項取決於你所連接的 GitHub 平台:
Platform
GitHub.com
GitHub Enterprise Server
Azure DevOps 服務
- GitHub.com 使用者帳號
- 個人存取權杖 (PAT)
- OAuth
- PAT
- GitHub 憑證
Azure DevOps Server 2020
不適用
- PAT
- GitHub 憑證
Note
GitHub 整合支援:
- Azure DevOps 服務:透過 Azure Boards 應用程式整合 GitHub.com 和 GitHub Enterprise Server 的儲存庫。
- Azure DevOps Server 2020 及以後版本:僅支援與GitHub Enterprise Server 倉庫整合。
- 其他 Git 存放庫:不支援整合。
授予 Azure Boards 組織存取權限
如果 Azure Boards 與 GitHub 之間的整合沒有如預期運作,請確認你已授權組織存取權限。
從GitHub網頁入口網站,從你的個人檔案選單開啟 Settings。
開啟的個人檔案的螢幕快照,選擇 [設定]。選擇 Applications 在 Integrations>Authorized OAuth Apps>Azure Boards。
在 [組織存取權] 底下,解決可能出現的任何問題。 選取 授予存取權 以將存取權授與任何顯示為存取請求待處理的組織。
顯示無存取權的組織的組織存取權限螢幕截圖。
解決存取問題
當 Azure Boards 與 GitHub 的連線失去存取權時,使用者介面會出現帶有紅色 X 的警示狀態。 將滑鼠停留在警示上方,以查看認證不再有效。 若要修正此問題,請移除連線並建立新的連線。
失敗連線的螢幕快照。
若要解決此問題,請考慮下列專案:
如果連線使用 OAuth:
Azure Boards 應用程式對於其中一個儲存庫的存取被拒。
GitHub 可能無法使用或無法存取。 這可能是因為服務中斷或內部部署的基礎結構/網路問題。 您可以從下列連結檢查服務狀態:
刪除並重新建立與 GitHub 儲存庫的連結。 這個重新建立的連線會讓 GitHub 提示重新授權 Azure Boards。
如果連線使用 PAT:
PAT 已撤銷,或所需的許可權範圍已變更且不足。
使用者可能沒有 GitHub 倉庫的管理員權限。
重新建立 PAT,並確定令牌的範圍包含必要的許可權: 。 如需詳細資訊,請參閱 使用 PAT 的最佳做法。
解決無法連接的 GitHub Enterprise Server 連線
如果你是從 Azure DevOps Server 遷移到 Azure DevOps Services,且已有 GitHub Enterprise Server 連線,現有連線可能無法如預期運作。 GitHub 內的工作項目提及可能會延遲或永遠不會出現在 Azure DevOps 服務中,因為與 GitHub 相關的回調網址已不再有效。 請考慮下列決議案:
移除並重新建立連線:移除並重新建立與GitHub企業伺服器儲存庫的連線。 請依照 Connect from Azure Boards 文件中提供的步驟順序操作。
Fix the 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 中的工作項目。 當提交訊息或拉取請求中提及工作專案時,兩個組織可能會嘗試連結至具有相符識別碼的工作專案,因而造成混淆。
為避免此問題,建議將單一 GitHub 倉庫連接到一個 Azure DevOps 組織。
Note
當你使用 GitHub 的 Azure Boards 應用程式連接時,該應用程式會阻止多個組織的連線。 如果 GitHub 儲存庫連接到錯誤的 Azure DevOps 組織,請先聯絡該組織的擁有者移除連線,再將該儲存庫加入正確的 Azure DevOps 組織。
更新選取工作項目類型的 XML 定義
如果您的組織使用 Hosted XML 或本地 XML 流程模型,請更新工作項目類型的 XML 定義,以自訂工作追蹤體驗,並從工作項目表單的開發區塊連結及查看 GitHub 連結類型。
例如,要將使用者故事與錯誤連結到Development 區段的 GitHub 提交與拉取請求,請更新使用者故事與錯誤的 XML 定義。
請遵循裝載 XML 進程模型中提供的工作順序來更新 XML 定義。 對每個工作項目類型,找到 Group Label="Development" 區段,並在程式碼語法中新增以下兩行以支援外部連結類型:GitHub Commit 以及 GitHub Pull Request。
<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?
答:更多資訊請參閱 User and permissions management FAQs/GitHub Enterprise。
後續步驟
相關內容
- 安裝並設定適用於 GitHub 的 Azure Boards 應用程式
- 設定狀態徽章以加入GitHub README 檔案
- 故障排除 GitHub 與 Azure Boards 整合
- 建置GitHub repositories
- 變更GitHub儲存庫存取
你可以用 GitHub 整合做什麼
一旦連線,你可以:
- 使用 GitHub Copilot:使用 GitHub Copilot 與工作項目進行自動程式碼產生
- 連結工作項目:自動將提交、分支和拉取請求連結到工作項目
- Track development:直接從Azure Boards監控進度