共用方式為


Azure Artifacts 中的套件圖形

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022

發行套件時,請務必從上游來源取用其所有相依性,以確保這些相依性都能在您的供應庫中取得。 當您從上游來源下載套件之後,複本就會儲存到您的儲存庫中。 這可確保即使上游來源無法存取,您的副本仍可供您和資料訂閱者使用。

上游如何構建一組可用的套件

由於 Azure Artifacts 摘要可以有其他摘要作為上游來源,因此有可能產生上游來源的循環,其中摘要 A 上游至摘要 B,然後上游到摘要 C,最終摘要 C 再上游回到摘要 A。這類迴圈若未正確管理,可能會導致套件請求問題,並形成無限迴圈,其中使用者向摘要 A 請求套件,然後 AB 請求,接著 B 再向 C 請求,最後 C 請求回到 A,形成迴圈。

上游來源的設計目的是要防止這類情況。 當摘要從其上游來源查閱套件時,它會在針對該上游來源設定的檢視中接收套件。 這表示查詢摘要 A 不會觸發可轉移的查詢來饋送 C (A -> B -> C),因為檢視是唯讀的。 因此,摘要 A 將可存取先前由使用者儲存到 B 的任何 C 套件,但無法存取 C 中可用的完整套件集。

這會讓來源 B 負責確保其本地套件構成完整的相依性圖表。 如此一來,透過另一個訊源的上游來源取用 B 套件的使用者可以成功解析依賴圖,並安裝其所需的 B 套件,而不會發生問題。

範例:建構一組可用的套件

讓我們考慮三個資料來源:Fabrikam、Contoso 和 AdventureWorks。 在此圖中,我們會在引入上游來源的過程中,檢查 Fabrikam 資料流的可用套件。

一開始,Fabrikam 沒有上游來源,可讓用戶連線到 Fabrikam,只安裝 1.0.0 版和 2.0.0 版小工具套件。 同樣地,Contoso 沒有上游來源,限制連線到 Contoso 的使用者只安裝 Gizmos 套件 1.0.0 和 3.0.0 版。 這同樣適用於 AdventureWorks 提要,對於連線的使用者來說,只能安裝 Gadgets 套件的 1.0.0 和 2.0.0 版本,或 Things 套件的 1.0.0 版本。

插圖顯示三個不同的沒有上游來源的資料流。

現在,讓我們探索 Contoso 將 AdventureWorks 新增為上游來源的案例。 當用戶連線到 Contoso 時,他們可存取更廣泛的套件。 他們可以安裝任何版本的 Gizmos、Gadgets 或 Things。 例如,如果使用者安裝 Gadgets@2.0.0,此特定套件版本會儲存至 Contoso,並連結回 AdventureWorks。

Contoso 將 AdventureWorks 新增為上游來源的圖例。

現在,讓我們考慮一種情況,即 Fabrikam 的供應來源將 Contoso 新增為上游來源。 連接至 Fabrikam 的使用者可以安裝任何版本的 Widgets、任何版本的 Gizmos,但僅限安裝已儲存的 Gadgets 版本(2.0.0)。

Fabrikam 將 Contoso 新增為上游來源的圖例。

使用者將無法安裝 1.0.0 版小工具或任何版本的 Things,因為這些套件版本尚未由 Contoso 使用者儲存到 Contoso。

Fabrikam 使用者可用的套件圖例。