本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Bundler 相容性
本指南包含 CodeArtifact 與 Bundler 相容性的相關資訊。
Bundler 相容性
AWS CodeArtifact 建議 Bundler 2.4.11 或更高版本。如果您在安裝時遇到問題,請將 Bundler CLI 更新至最新版本。
Bundler 版本支援
在低於 2.4.11 的 Bundler 版本中,在 Bundler 決定查詢完整索引之前,Gemfile 中可以定義 500 個相依性specs.4.8.gz。由於 CodeArtifact 不支援完整索引,因此在使用低於 2.4.11 的 Bundler 版本時,指定超過 500 個相依性將無法與 CodeArtifact 搭配使用。
若要使用 CodeArtifact 在 Gemfile 中定義超過 500 個相依性,請將 Bundler 更新至 2.4.11 版或更新版本。
Bundler 操作支援
Bundler 使用兩種通訊協定之一來解析 Ruby Gem 套件相依性:精簡索引 API 或相依性 API。CodeArtifact 支援兩者。Bundler 2.4.11 和更新版本偏好精簡索引 API,如果無法使用,則會回到相依性 API;舊版只會使用相依性 API。RubyGems 3.5.19 和更新版本會在執行 時直接使用精簡索引 APIgem install。
CodeArtifact 支援下列精簡索引端點:
GET /versions:使用完整版本清單傳回儲存庫中的每個 Gem。Bundler 和 RubyGems 使用此端點做為相依性解析的進入點。GET /names:傳回儲存庫中的每個 Gem 名稱,依字母順序排序。GET /info/:傳回單一 Gem 套件的版本、相依性和required-Ruby-version資訊。gem-name
/versions 和 /names端點支援最多包含 5,000 個 Gem 套件的儲存庫。針對包含超過 5,000 個 Gem 套件之儲存庫的請求會傳回 HTTP 400 錯誤。
CodeArtifact 也支援位於 的 Bundler Dependencies API/api/v1/dependencies。單一請求可以包含多個 Gem 名稱;如需多 Gem 請求如何針對您帳戶的每秒讀取請求配額加權的詳細資訊,請參閱 配額 in AWS CodeArtifact。
由於 /versions和 會/names傳回儲存庫中每個 Gem 的資料,CodeArtifact 也會依傳回的 Gem 數目加權這些請求。即使 HTTP 請求率顯示為低,執行並行bundle install或 gem install 操作的 CI/CD 環境也可以受到調節。如果您在 Ruby Gem 套件解析期間遇到限流,請從單一 AWS 帳戶請求提高每秒讀取請求的配額。
如果您之前將 RubyGems 固定為低於 3.5.19 的版本,作為 CodeArtifact 相容性的解決方法,您現在可以移除該 PIN 並升級至最新版本。
CodeArtifact 不支援舊版 RubyGems 規格索引,包括 specs.4.8.gz、 latest_specs.4.8.gz和 prerelease_specs.4.8.gz。這些被精簡索引 API 取代。
測試精簡索引支援
若要驗證精簡索引解析度是否與 CodeArtifact 儲存庫正常運作:
如果您先前將 RubyGems 釘選為低於 3.5.19 的版本,請移除接腳:
gem update --system驗證您的 RubyGems 和 Bundler 版本:
gem --version # Should be 3.5.19 or higher bundle --version # Should be 2.4.11 or higher針對 CodeArtifact 儲存庫
gem install進行測試:gem install <gem-name> --source https://<domain>-<account-id>.d.codeartifact.<region>.amazonaws.com/ruby/<repo>/bundle install使用詳細輸出進行測試,以確認正在使用精簡索引:bundle install --verbose 2>&1 | grep -i "compact\|/versions\|/info"您應該會看到對
/versions和 的請求,/info/<gem-name>而不是/api/v1/dependencies。