請求具有上游存儲庫的軟件包版本 - Amazon CodeCatalyst

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

請求具有上游存儲庫的軟件包版本

下列範例顯示套件管理員從具有上游儲存庫的套裝程式儲存區域要求 CodeCatalyst 套件時的可能案例。

在此範例中,套件管理員 (例如) 會從名downstreamnpm具有多個上游儲存庫的套件儲存庫要求套件版本。當要求套件時,可能會發生下列情況:

  • 如果downstream包含請求的軟件包版本,則將其返回給客戶端。

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

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

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

從上游儲存庫保留 Package

如果在上游存放庫中找到要求的套件版本,則會保留對該套件的參考,並且永遠可在要求該套件的存放庫中使用。如此可確保在上游儲存庫發生意外中斷時,您可以存取套件。保留的套件版本不受下列任何一項影響:

  • 刪除上游存放庫。

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

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

  • 編輯上游存放庫中的套件版本 (例如,向其新增資產)。

透過上游關係擷取套件

CodeCatalyst 可以通過稱為上游存儲庫的多個鏈接存儲庫獲取包。如果套 CodeCatalyst 裝程式儲存庫具有與閘道儲存庫之上游連線的另一個 CodeCatalyst 套裝程式儲存庫的上游連線,則會從外部存放庫複製不在上游儲存庫中的套裝軟體的要求。例如,請考慮下列組態:名為的存放庫repo-A具有與閘道存放庫的上游連線npm-public-registry-gatewaynpm-public-registry-gateway與公共軟件包存儲庫有一個上游連接,https://npmjs.com.

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

如果配置npm為使用repo-A存放庫,則執行中npm install會啟動從中複製套裝軟https://npmjs.comnpm-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一段時間匯入的所有套件和套件版本。

中繼儲存庫中的 Package 保留

CodeCatalyst 允許您鏈接上游存儲庫。例如,repo-A可以具有repo-B上游存儲庫,並且repo-B可以repo-C作為上游存儲庫。此配置使軟件包版本在中repo-B並從中repo-C提供repo-A

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

當套裝程式管理員連線至儲存庫repo-A並從儲存庫擷取套件版本時repo-C,套件版本不會保留在儲存庫repo-B中。封裝版本只會保留在最遠的下游存放庫中,在此範例中為。repo-A它不會保留在任何中間存儲庫中。對於較長的鏈結也是如此;例如,如果有四個存儲庫:repo-A、、和 repo-B repo-Crepo-D,以及連接到從中repo-A獲取軟件包版本的軟件包管理器repo-D,則該軟件包版本將保留在或中,repo-A但不會保留在repo-Brepo-C中。

從公用 Package 存放庫提取套件版本時,套件保留行為與公用套件存放庫有直接上游連線的閘道儲存庫中會一直保留套件版本。例如,repo-A具有repo-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.com 的上游連接。 lodash 4.17.20 不會保留在中,repo-B因為這是一個中繼儲存庫。