建立內部部署 Bitbucket 儲存機制

注意

若要整合 Bitbucket cloud 與 Azure Pipelines,請參閱Bitbucket cloud

您可以將內部部署 Bitbucket 伺服器或其他 Git 伺服器與 Azure Pipelines 整合。 您的內部部署伺服器可能會對網際網路公開,或可能不會。

如果您的內部部署伺服器可從執行 Azure Pipelines 服務的伺服器連線,則:

  • 您可以設定傳統組建和設定 CI 觸發程式

如果您的內部部署伺服器無法從執行 Azure Pipelines service 的伺服器連線,則:

  • 您可以設定傳統組建管線並開始手動組建
  • 您無法設定 CI 觸發程式

注意

YAML 管線無法與內部部署 Bitbucket 存放庫搭配運作。

注意

內部部署 Bitbucket 儲存機制無法使用 PR 觸發程式。

如果您的內部部署伺服器可從裝載的代理程式連線,則您可以使用裝載的代理程式來執行手動、排程或 CI 組建。 否則,您必須設定可以存取內部部署伺服器並提取程式碼的自我裝載代理程式。

可從 Azure Pipelines

如果您的內部部署 Bitbucket 伺服器可從 Azure Pipelines 服務連線,請建立另一個 Git服務連線,並使用該連接來建立管線。 請選取此選項,以嘗試從 Azure Pipelines 存取此 Git 伺服器

CI 觸發程式是透過輪詢來運作,而不是透過 webhook。 換句話說,如果有任何程式碼更新,Azure Pipelines 會定期檢查 Bitbucket 伺服器。 如果有的話,Azure Pipelines 將會啟動新的執行。

無法從 Azure Pipelines

如果無法從 Azure Pipelines 連線到 Bitbucket 伺服器,您有兩個選項:

  • 與您的 IT 部門合作,在 Azure Pipelines 和內部部署 Git 伺服器之間開啟網路路徑。 例如,您可以將例外狀況新增至防火牆規則,以允許來自 Azure Pipelines 流量的流量。 請參閱Azure DevOps ip的一節,以查看您需要允許的 IP 位址。 此外,您需要有 Bitbucket 伺服器的公用 DNS 專案,讓 Azure Pipelines 可以將伺服器的 FQDN 解析為 IP 位址。

  • 您可以使用其他 Git連線,但請告訴 Azure Pipelines 不要嘗試從 Azure Pipelines 存取此 Git 伺服器。 CI 和 PR 觸發程式將無法在此設定中運作。 您只能啟動手動或排程的管線執行。

可從 Microsoft 裝載的代理程式連線

您可能必須做的另一項決定是要使用 Microsoft 裝載的代理程式或自我裝載的代理程式來執行您的管線。 這通常是由 Microsoft 裝載的代理程式是否可以連線到您的伺服器。 若要檢查是否可以,請建立簡單的管線以使用 Microsoft 裝載的代理程式,並務必新增從伺服器簽出原始程式碼的步驟。 如果通過,則您可以繼續使用 Microsoft 裝載的代理程式。

無法從 Microsoft 裝載的代理程式連線

如果上述區段中所述的簡單測試管線因錯誤而失敗 TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attempting ,則無法從 Microsoft 裝載的代理程式連線到 Bitbucket 伺服器。 這可能是因為防火牆封鎖來自這些伺服器的流量所造成。 在此情況下,您有兩個選項:

  • 與您的 IT 部門合作,開啟 Microsoft 裝載的代理程式和 Bitbucket 伺服器之間的網路路徑。 請參閱 Microsoft 託管代理程式中的 網路 功能一節。

  • 切換至使用 自我裝載的代理程式擴展集代理程式。 您可以在網路中設定這些代理程式,因此將可存取 Bitbucket 伺服器。 這些代理程式只需要 Azure Pipelines 的輸出連線。 不需要針對輸入連線開啟防火牆。 確定您在建立服務連接時指定的伺服器名稱可從自我裝載的代理程式解析。

Azure DevOps IP 位址

當您使用其他 Git連線來設定傳統管線時,請停用 Azure Pipelines 服務與 Bitbucket 伺服器之間的通訊,並使用自我裝載的代理程式來建立程式碼,您將會獲得較差的體驗:

  • 您必須在建立管線期間手動輸入存放庫的名稱
  • 您無法使用 CI 觸發程式,因為 Azure Pipelines 無法輪詢程式碼的變更
  • 只有在有變更時,才可使用排程觸發程式搭配選項來建立
  • 您無法在使用者介面中查看最新認可的相關資訊

如果您想要增強此體驗,請務必啟用從 Azure Pipelines 到 Bitbucket 伺服器的通訊。

若要允許來自 Azure DevOps 的流量抵達您的 Bitbucket 伺服器,請將輸入連線中指定的 IP 位址或服務標籤新增至防火牆的允許清單。 如果您使用 ExpressRoute,請務必也將 EXPRESSROUTE IP 範圍 包含在防火牆的允許清單中。

允許 Azure Pipelines 嘗試存取另一個 git服務連線中的 git 伺服器。

常見問題集

與 Bitbucket 伺服器整合相關的問題可分為下列類別:

  • 失敗的觸發程式: 當我將更新推送至存放庫時,不會觸發我的管線。
  • 失敗簽出 正在觸發我的管線,但在結帳步驟中會失敗。

失敗的觸發程式

我將變更推送至我的伺服器,但不會觸發管線。

遵循下列每個步驟,針對失敗的觸發程式進行疑難排解:

  • 您的 Bitbucket 伺服器可從 Azure Pipelines 存取嗎? Azure Pipelines 定期輪詢 Bitbucket 伺服器是否有變更。 如果 Bitbucket 伺服器位於防火牆後方,此流量可能不會到達您的伺服器。 請參閱Azure DevOps IP 位址,並確認您已授與所有必要 ip 位址的例外狀況。 這些 IP 位址可能已變更,因為您原先設定例外狀況規則。 如果您使用外部 Git 連線,而且無法從 Azure Pipelines 存取您的伺服器,則只能啟動手動執行。

  • 您的管線已暫停或停用嗎? 開啟管線的編輯器,然後選取要檢查設定。 如果您的管線已暫停或停用,則觸發程式將無法運作。

  • 您是否已排除推送變更的分支或路徑? 藉由將變更推送至內含分支中包含的路徑進行測試。 請注意,觸發程式中的路徑會區分大小寫。 在指定觸發程式中的路徑時,請確定您使用的是與實際資料夾相同的大小寫。

我並未將任何更新推送至我的程式碼,但仍在觸發管線。

  • Bitbucket 的持續整合觸發程式可透過輪詢運作。 在每個輪詢間隔之後,Azure Pipelines 會嘗試聯繫 Bitbucket 伺服器,以檢查程式碼是否有任何更新。 如果 Azure Pipelines 無法連線到 Bitbucket 伺服器 (可能是因為網路問題) ,則我們仍會開始新的執行,但前提是可能已變更程式碼。 在少數情況下,Azure Pipelines 也可能會建立虛擬失敗的組建,並顯示錯誤訊息,指出它無法連接到伺服器。

失敗簽出

當我嘗試以手動方式啟動新的執行時,會延遲4-8 分鐘的時間才開始。

  • Azure Pipelines 無法連線到您的 Bitbucket 伺服器。 請確定您未在 Bitbucket 服務連線中選取嘗試從 Azure Pipelines 存取此 Git 伺服器的選項。 如果選取此選項,Azure Pipelines 將會嘗試連接到您的伺服器,而且因為無法連線到您的伺服器,所以它會一直算出並開始執行。 取消核取該選項可加速您的手動執行。

簽出步驟失敗,並出現錯誤訊息,指出無法解析伺服器。

您是否使用 Microsoft 託管的代理程式? 若是如此,這些代理程式可能無法連接到您的 Bitbucket 伺服器。 如需詳細資訊,請參閱 Microsoft 裝載的 代理程式無法 連線。