使用上游儲存庫請求套件版本 - Amazon CodeCatalyst

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用上游儲存庫請求套件版本

下列範例顯示套件管理員從 CodeCatalyst 具有上游儲存庫的套件儲存庫請求套件的可能案例。

在此範例中,套件管理員,例如 npm,會從具有多個上游儲存庫downstream的名為 的套件儲存庫請求套件版本。請求套件時,可能會發生以下情況:

  • 如果 downstream包含請求的套件版本,則會傳回用戶端。

  • 如果 downstream不包含請求的套件版本,請在 downstream的上游儲存庫中,依其設定的搜尋順序進行 CodeCatalyst 搜尋。如果找到套件版本,則會將其參考複製到 downstream,並將套件版本傳回用戶端。

  • 如果 downstream或其上游儲存庫都不包含套件版本,則會將 HTTP 404 Not Found回應傳回給用戶端。

一個儲存庫允許的直接上游儲存庫數量上限為 10。請求套件版本時, 中 CodeCatalyst 搜尋的儲存庫數目上限為 25。

從上游儲存庫保留套件

如果在上游儲存庫中找到請求的套件版本,則會保留其參考,並且一律可在請求的儲存庫中使用。這可確保在上游儲存庫發生非預期的中斷時,您可以存取套件。保留的套件版本不受下列任何一項影響:

  • 刪除上游儲存庫。

  • 中斷上游儲存庫與下游儲存庫的連線。

  • 從上游儲存庫刪除套件版本。

  • 在上游儲存庫中編輯套件版本 (例如,新增資產至儲存庫)。

透過上游關係擷取套件

CodeCatalyst 可以透過稱為上游儲存庫的多個連結儲存庫擷取套件。如果 CodeCatalyst 套件儲存庫與另一個與閘道儲存庫具有上游連線 CodeCatalyst 的套件儲存庫具有上游連線,則會從外部儲存庫複製不在上游儲存庫中的套件請求。例如,請考慮下列組態:名為 的儲存庫與閘道儲存庫repo-A有上游連線,npm-public-registry-gateway. 與公有套件儲存庫npm-public-registry-gateway有上游連線,https://npmjs.com

簡單的上游儲存庫圖表顯示三個鏈結在一起的儲存庫。

如果 npm 設定為使用repo-A儲存庫,則執行 會npm install啟動套件從 複製到 https://npmjs.com npm-public-registry-gateway。已安裝的版本也會提取至 repo-A。下列範例會安裝 lodash

$ npm config get registry https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/ $ npm install lodash + lodash@4.17.20 added 1 package from 2 contributors in 6.933s

執行 後npm install, 僅repo-A包含最新版本 (lodash 4.17.20),因為這是由 npm 從 擷取的版本repo-A

由於 npm-public-registry-gateway 具有與 的外部上游連線https://npmjs.com,因此從 匯入的所有套件版本https://npmjs.com都會儲存在 中npm-public-registry-gateway。任何下游儲存庫都可以擷取這些套件版本,其上游連線會導致 npm-public-registry-gateway

的內容npm-public-registry-gateway可讓您查看https://npmjs.com隨著時間匯入的所有套件和套件版本。

中繼儲存庫中的套件保留

CodeCatalyst 可讓您鏈結上游儲存庫。例如, repo-A可以 repo-B 作為上游儲存庫,repo-B也可以 repo-C作為上游儲存庫。此組態可讓 中的套件版本repo-B和從 repo-C取得repo-A

簡單的上游儲存庫圖表顯示三個鏈結在一起的儲存庫。

當套件管理員連線至儲存庫repo-A並從儲存庫 擷取套件版本時repo-C,套件版本不會保留在儲存庫 中repo-B。套件版本只會保留在最新的下游儲存庫中,在此範例中為 repo-A。它不會保留在任何中繼儲存庫中。對於較長的鏈結也是如此;例如,如果有四個儲存庫:repo-Arepo-Crepo-Brepo-D,以及連接至從 repo-A 擷取套件版本的套件管理員repo-D,套件版本會保留在 repo-B或 中repo-A,但不會保留在 中repo-C

從公有套件儲存庫中提取套件版本時,套件保留行為類似,但套件版本一律保留在與公有儲存庫直接上游連線的閘道儲存庫中。例如, repo-Arepo-B作為上游儲存庫。 repo-Bnpm-public-registry-gateway作為上游儲存庫,其與公有儲存庫 npmjs.com 具有上游連線;請參閱下圖。

上游儲存庫圖表顯示三個與 npmjs.com 外部上游連線鏈結在一起的儲存庫。

如果連接至 的套件管理員repo-A請求特定套件版本,例如 lodash 4.17.20,且套件版本不存在於三個儲存庫中的任何一個,則將從 npmjs.com:// 中擷取。擷取 lodash 4.17.20 時,它會保留在 中repo-A,因為這是最深入的下游儲存庫,而且npm-public-registry-gateway它與公有外部儲存庫有上游連線,npmjs.comlodash 4.17.20 不會保留在 中,repo-B因為這是中繼儲存庫。