什麼是上游來源?
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Artifacts 上游來源可讓開發人員輕鬆地將各種來源的套件儲存在單一摘要中,包括您發行的套件,以及從外部摘要或公用登錄安裝的套件,例如 NuGet.org、npmjs.com。 啟用上游來源之後,從上游來源安裝的任何套件都會自動儲存至您的摘要。
注意
若要從上游儲存套件,您必須具有 資訊流與上游讀取者(共同作業者) 角色或更高等級。 如需詳細資訊,請參閱 管理許可權 。
為什麼要使用上游來源?
啟用上游來源有多個優點,讓您可以在單一饋送中管理產品的依賴性:
簡單:將所有套件儲存在單一摘要中,可簡化組態檔,例如 NuGet.config、npmrc 或 settings.xml。 只要在組態檔中提供一個摘要,您就能減少錯誤的機會並簡化設定。
一致的建置:您的資料源會按照預先定義的順序解析套件請求,確保建置更具可預測性和可靠性。
套件完整性:您的摘要會保留從上游來源儲存之套件的相關元數據,讓您驗證其真實性,並確保您使用原始版本,而不是複製或潛在的惡意版本。
可靠性:從上游來源安裝的套件會自動儲存至您的摘要。 這可確保即使上游來源因為維護或其他問題而無法使用,仍能繼續存取,讓您能夠放心地繼續開發和建置。
套件取用者的最佳做法
若要充分利用上下游資源作為套件使用者的優勢,請遵循下列最佳做法:
1.在組態檔中使用單一資料流
為了讓摘要提供 具決定性的還原,請確定您的組態檔(例如 nuget.config 或 npmrc)僅參考一個已啟用上游來源的摘要。
範例:
registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/ always-auth=true
<packageSources> <clear /> <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" /> </packageSources>
注意
NuGet 會編譯數 個組態檔 ,以判斷要套用的完整選項集。 使用
<clear />
可確保會忽略較高層級組態檔中指定的所有其他套件來源。
2.刻意訂購上游來源
如果您只使用公用登錄,例如 NuGet.org 或 npmjs.com,上游來源的順序並不重要。 對資料流的需求會依循 搜尋順序 一節中所述的順序。
不過,當您管理多個來源時,例如摘要和公用登錄的組合,會依摘要組態設定中所定義的順序搜尋每個上游來源。 在此情況下,建議您先將公用登錄放在上游來源清單中。
在某些獨特的案例中,某些組織會修改開放原始碼軟體 (OSS) 套件,以解決安全性考慮、增強功能,或滿足需要內部重建套件的特定內部需求,而不是直接從公用存放庫取得套件。 如果您的組織遵循這種做法,請將包含這些自定義 OSS 套件的上游來源放在其他公用登錄之前。 這可確保使用您的自定義版本,而不是公用版本。
最佳做法:資訊流擁有者與套件發佈者
若要確保您的資料流可以輕鬆地設定為上游來源,應遵循下列最佳做法:
1.使用預設檢視
所有新建立摘要的預設檢視是 @Local
,其中包含發佈至摘要的所有套件,以及從上游來源儲存的套件。
如果您想要使用其他檢視,例如新發行套件版本的檢視,您可以將套件升階為 @Release
檢視,然後將該檢視提供給目標取用者。 如需詳細資訊,請參閱 摘要檢視。
2.建構套件圖形
若要建構套件圖形,只需連線到摘要的默認檢視,並安裝您想要共用的套件。 將套件儲存至預設檢視之後,想要取用套件的使用者就能夠解析套件圖形並安裝所需的版本。 上游來源的套件會根據對應上游來源的已設定檢視來顯示。 如需詳細資訊,請參閱 上游如何建構一組可用的套件 。
搜尋順序
對於支援多個摘要的公用套件管理員,例如 NuGet 和 Maven,查詢摘要的順序有時可能不清楚或不確定。 例如,NuGet 會將平行查詢傳送至組態檔中的所有摘要,並以先出先出 (FIFO) 方式處理回應,這可能會導致結果不一致。
上游來源會藉由依下列順序搜尋摘要及其上游來源,強制執行結構化搜尋順序來消除這種不確定性:
已直接發佈至饋送的套件。
已經從上游來源保存下來的套件。
可從上游來源取得的套件。 每個上游來源會依摘要組態中所列的順序進行搜尋。
注意
Azure Artifacts 不支援使用 Visual Studio 中的 NuGet 套件總管在上游來源中搜尋套件。
從上游來源儲存套件
當您在匯入來源啟用了上游來源時,Azure Artifacts 會自動從上游儲存協作者或更高層級安裝的任何套件的副本。
例如,您可以使用 npm install express 之類的命令,直接從上游來源安裝套件。 或者,套件可能會安裝為相依性解析程式的一部分。 在此情況下,安裝 express 也會儲存其相依性,例如 接受。
上游來源可為取用者和基礎結構提供重要的保護,以防止非預期的中斷。 如果上游來源遇到當機、維護或暫時無法使用,您仍然可以從您的資料來源擷取必要的套件,並繼續開發。
注意
只有 npm 套件才支援自定義上游來源。
覆寫上游來源的套件
當您啟用上游來源時,請記住,您無法發佈已存在於上游來源中的套件版本。 例如,如果您啟用 NuGet.org 上游,您將無法發佈 Newtonsoft.Json 10.0.3 套件,因為該版本已在 NuGet.org 上使用。
如果您需要發佈已存在於其中一個上游來源中的套件版本,您必須遵循下列步驟:
停用相關的上游來源。
發佈您的套件。
重新啟用上游來源。
此程式可確保您可以發佈所需的版本,同時維護上游來源的完整性。
注意
套件版本是不可變的。 即使上游來源已停用或移除,已儲存的套件仍會保留在摘要中。
上游來源健全狀態
如果摘要有失敗的上游來源,就無法再重新整理相同通訊協定套件的元數據。 若要檢查上游來源的健康狀態,請遵循下列步驟:
登入您的 Azure DevOps 組織,然後瀏覽至您的專案。
選擇 工件,然後從下拉選單中選擇您的資訊來源。
選取齒輪圖示
以導覽至您的 動態消息設定,然後選取 上游來源。
如果發生任何失敗,則會顯示警告訊息。 按兩下 失敗 狀態會提供其他詳細數據,包括失敗的原因,以及如何解決失敗的指示。
注意
針對像 NuGet.org 這樣的公用註冊中心,當套件推送到公用註冊中心後,會有 3-6 小時的延遲,才會可供下載。 此延遲取決於作業時間和數據傳播。 不過,當上游來源是 Azure Artifacts 摘要時,延遲通常不超過幾分鐘。
常見問題集
問:即使我在其中一個信息流的上游看到它,為什麼我還是找不到我的套件?
答:從上游來源發佈的套件在不久後會在下游匯入中提供。 不過,只有在封包儲存至動態消息後,讀者才會看到該套件。 當具有 饋送和上游讀取器(共同作業者) 或更高許可權的使用者在下游饋送中安裝版本時,套件就會被儲存。 這會觸發下游從上游保存套件的副本,且在儲存後,該副本將永久保存在下游,並可供所有讀者使用。 這是當套件版本顯示在 Web UI 的套件版本區段中時。
問:什麼是摘要檢視?
答:檢視可讓開發人員選擇性地共用已測試及驗證的套件版本子集,但不包括仍在開發中或尚未符合品質準則的任何套件。 如需詳細資訊,請參閱 什麼是動態檢視。
問:我找不到要設定為上游來源的資訊來源?
答:請確定資料饋送的擁有者已將視圖共享為上游來源。 如需詳細資訊,請參閱 在不同組織中新增供應來源作為上游來源。
問:具有 摘要讀取者 角色的使用者是否可以從上游來源下載套件?
A: 不可以。 在 Azure Artifacts 饋送中具有 饋送讀取器 角色的使用者,只能下載已儲存至饋送的套件。 當 摘要和上游讀取器(共同作業者)、摘要發行者(參與者)或 摘要擁有者 從上游安裝這些套件時,套件會儲存至摘要。
問:當使用者刪除或取消發佈從上游來源儲存的套件時,會發生什麼事?
答:套件無法從軟體源下載,且版本號碼將被永久保留。 此外,將不再從上游來源保存該套件。 舊版和更新版本的套件將不會受到影響。
問:當使用者取代從上游來源儲存的套件時,會發生什麼事?
答:當使用者棄用套件時,會將警告訊息加入到套件的中繼資料中。 每當從來源檢視或安裝套件時,就會顯示這個警告。