Azure Artifacts 上游來源

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

您可以使用上游來源,輕鬆地將各種來源的套件儲存在單一摘要中。 這包括您發佈的套件,以及您從外部摘要和公用登錄取用的套件,例如 NuGet.org、npmjs.com、Maven Central 和 PyPI。 啟用上游來源之後,從這些上游來源安裝的任何套件都會自動將複本儲存到您的摘要。

注意

若要從上游儲存套件,您必須具有 摘要和上游讀取者(共同作業者) 角色或更高版本。 如需詳細資訊,請參閱 權限

優點

啟用上游來源提供數個優點,可在單一摘要內管理產品的相依性:

  • 簡單性: 當您將所有套件發佈至單一摘要時,它會簡化 NuGet.config、npmrc 或settings.xml等組態檔。 只要在組態檔中提供一個摘要,您就可以減少錯誤和 Bug 的機會,簡化設定。

  • 決定性: 您的摘要會依序解析套件要求,以在重建程式代碼時產生更一致性。

  • 源: 您的摘要會保留其從上游來源儲存之套件的相關信息。 這可讓您確認您使用的是原始套件,而不是複製或潛在的惡意版本。

  • 安心: 從上游來源安裝的每個套件都會自動儲存至您的摘要。 這表示即使上游來源已停用、移除或進行維護,您仍可以放心地繼續開發和建置,因為您在摘要中有該套件的複本。

最佳做法 - 套件取用者

若要充分利用上游來源作為套件取用者的優點,請遵循下列最佳做法:

在組態檔中使用單一摘要:

為了讓摘要提供 決定性的還原,請確定您的組態檔,例如 nuget.config 或 .npmrc 僅參考一個已啟用上游來源的摘要。 請參閱下列範例:

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

注意

NuGet 會編譯數 個組態檔 ,以判斷要套用的完整選項集。 藉由使用 <clear />,您可以有效地忽略較高層級組態檔中指定的所有其他套件來源。

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

刻意訂購上游來源:

如果您只使用公用登錄,例如 nuget.org 或 npmjs.com,則上游來源的順序無關緊要。 對摘要的要求會遵循搜尋順序一節中詳述的順序。

不過,當您管理多個來源時,可能包含摘要和公用登錄的組合,會依摘要的組態設定中所列的順序搜尋每個上游來源。 在此情況下,建議您先將公用登錄放在上游來源清單中。

在某些獨特的案例中,某些組織選擇自定義開放原始碼軟體 (OSS) 套件。 這可能涉及解決安全性考慮、增強功能,或滿足需要內部重建套件的特定需求,而不是直接從公用存放庫取得套件。 如果您的組織遵循這種做法,建議您將包含這些已修改 OSS 套件的上游來源放在公用套件管理員之前。 此安排可確保使用您組織的自定義版本。

使用建議的預設檢視:

當您將遠端摘要新增為上游來源時,您必須選取其摘要的檢視。 這可讓上游來源建構一組可用的套件。 如需詳細資訊,請參閱 上游如何建構一組可用的套件

最佳做法:摘要擁有者/套件發行者

若要確定您的摘要很容易設定為上游來源,請考慮套用下列最佳做法:

使用預設檢視:

所有新建立摘要的默認檢視是 @Local 檢視,其中包含發佈至摘要或從上游來源儲存的所有套件。

如果您想要使用其他檢視,例如新發行套件版本的檢視,您可以將套件升階為 @Release 檢視,然後讓該檢視可供套件取用者使用。

建構套件圖形:

若要建構套件圖形,只需連線到摘要的默認檢視並安裝您想要共用的套件。 當封裝儲存至預設檢視時,想要取用套件的使用者將能夠解析套件圖形並安裝所需的套件。 上游來源的套件會根據對應上游來源的已設定檢視來顯示。

搜尋順序

對於支援 NuGet 和 Maven 等多個摘要的公用套件管理員,查詢摘要的順序有時可能不清楚或不確定。 例如,在 NuGet 中,平行查詢會傳送至組態檔中的所有摘要,而回應會以先出先出 (FIFO) 方式進行處理。

上游來源會依下列順序搜尋摘要及其上游來源,藉此解決這種不具決定性的行為:

  1. 已直接發佈至摘要的套件。

  2. 已從上游來源儲存的套件。

  3. 可從上游來源取得的套件。 每個上游來源會依摘要組態中所列的順序進行搜尋。

若要充分利用快速查閱功能,建議您在組態檔中只包含一個摘要。

注意

不支援使用 NuGet 套件總管在上游來源中搜尋套件。

從上游來源儲存套件

當您啟用摘要的上游來源,並從上游來源安裝套件時,該套件的自動復本會儲存至您的摘要。 這種做法可增強下載效能並節省網路頻寬。

例如,您可以使用 npm install express 之類的命令,直接從上游來源安裝套件。 或者,套件可能會安裝為相依性解析程式的一部分。 在後者的案例中,安裝 Express 也會儲存其相依性,例如 接受

注意

只有 npm 套件才支援自定義上游來源。

覆寫上游來源的套件

啟用上游來源時,請務必注意,無法發行已存在於上游來源中的套件版本。 例如,如果您啟用 NuGet.org 上游,您將無法發佈 Newtonsoft.Json 10.0.3 套件,因為該確切版本已存在於 NuGet.org 中。

如果您需要發佈已存在於其中一個上游來源中的套件版本,您必須遵循下列步驟:

  1. 停用相關的上游來源。
  2. 發佈您的套件。
  3. 重新啟用上游來源。

注意

套件版本是不可變的。 即使上游來源已停用或移除,已儲存的套件仍會保留在摘要中。

上游來源健全狀態

如果摘要有失敗的上游來源,就無法再重新整理相同通訊協定套件的元數據。 若要檢查上游來源的健康狀態,請遵循下列步驟:

  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

  2. 選取 [ 成品],然後從下拉功能表中選取您的摘要。

  3. 選取齒輪圖示 齒輪圖示 以流覽至您的 摘要設定,然後選取 [上游來源]。

    顯示上游來源上次同步處理狀態的螢幕快照。

  4. 如果發生任何失敗,則會顯示警告訊息。 按兩下 [ 失敗 ] 狀態會提供其他詳細數據,包括失敗的原因,以及如何解決失敗的指示。

    顯示同步失敗詳細數據的螢幕快照。

注意

在 NuGet.org 之類的公用登錄案例中,套件推送至公用登錄的時間以及可供下載的時間之間有 3-6 小時的延遲。 此延遲取決於作業時間和數據傳播。 不過,當上游來源是 Azure Artifacts 摘要時,延遲通常不超過幾分鐘。

離線上游來源

上游來源可為您的取用者和基礎結構提供寶貴的保護,使其免於意外中斷。 當您從上游來源安裝套件時,該套件的複本會儲存至您的摘要。 如果上游來源遇到停機、進行維護或暫時無法使用的情況,您仍然可以從摘要擷取必要的套件,並繼續開發。

常見問題集

問:即使我可以在其中一個摘要的上游看到它,我還是找不到我的套件?

答:一旦發佈套件,來自上游來源的套件就會在下游可供使用。 不過,套件只會在擷取摘要之後,才會出現在摘要的 UI 中。 當摘要和上游讀取器(共同作業者)或更新版本從上游安裝套件版本時,就會觸發擷取。

問:什麼是摘要檢視?

答:檢視可讓開發人員選擇性地共用已測試及驗證的套件版本子集,但不包括仍在開發中或尚未符合品質準則的任何套件。 如需詳細資訊,請參閱 什麼是摘要檢視

問:我找不到要設定為上游來源的摘要?

答:請確定摘要的擁有者將檢視共用為上游來源。

問:具有 摘要讀取者 角色的使用者是否可以從上游來源下載套件?

A: 不可以。 Azure Artifacts 摘要摘要中具有 摘要讀取者 角色的使用者只能下載已儲存至摘要的套件。 當摘要和上游讀取器(共同作業者)、摘要發行者(參與者)摘要擁有者從上游安裝這些套件時,套件會儲存至摘要。

問:當使用者刪除或取消發佈從上游來源儲存的套件時,會發生什麼事?

答:套件無法從摘要下載,且版本號碼會永久保留。 此外,套件將不再從上游來源儲存。 舊版和更新版本的套件將不會受到影響。

問:當使用者取代從上游來源儲存的套件時,會發生什麼事?

答:當使用者取代套件時,會將警告訊息新增至套件的元數據,每當從摘要檢視或安裝封裝時,就會顯示該訊息。