本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Bundler 兼容性
本指南包含有关与 Bundler CodeArtifact 的兼容性的信息。
Bundler 兼容性
AWS CodeArtifact 推荐 Bundler 2.4.11 或更高版本。如果在安装时遇到问题,请将 Bundler CLI 更新到最新版本。
Bundler 版本支持
对于低于 2.4.11 的 Bundler 版本,在 Bundler 决定查询完整索引 specs.4.8.gz 之前,Gemfile 中可定义的依赖项上限为 500 个。由于 CodeArtifact 不支持完整索引,因此在使用低于 2.4.11 的 Bundler 版本 CodeArtifact 时,指定超过 500 个依赖项将不起作用。
要使用在 Gemfile 中定义 500 个以上的依赖关系 CodeArtifact,请将 Bundler 更新到 2.4.11 或更高版本。
Bundler 操作支持
Bundler 使用以下两种协议之一来解析 Ruby gem 依赖关系:压缩索引 API 或依赖项 API。 CodeArtifact 两者都支持。Bundler 2.4.11 及更高版本更喜欢压缩索引 API,如果依赖项 API 不可用,则回退到依赖项 API;早期版本仅使用依赖项 API。 RubyGems 3.5.19 及更高版本在运行时直接使用压缩索引 API。gem install
CodeArtifact 支持以下压缩索引端点:
GET /versions: 返回存储库中的每个 gem 及其完整版本列表。Bundler 并 RubyGems 使用此端点作为依赖关系解析的入口点。GET /names: 返回存储库中的每个 gem 名称,按字母顺序排序。GET /info/: 返回单个 Gem 的版本、依赖关系和必填Ruby-version 信息。gem-name
/versions和/names端点支持最多包含 5,000 颗宝石的存储库。针对包含 5,000 个以上宝石的存储库发出的请求会返回 HTTP 400 错误。
CodeArtifact 还支持 Bundler 依赖关系 API,网址为/api/v1/dependencies。单个请求可以包含多个 Gem 名称;有关如何根据账户的每秒读取请求配额对多 Gem 请求进行权重的详细信息,请参阅中的配额 AWS CodeArtifact。
因为/versions并/names返回存储库中每个 gem 的数据, CodeArtifact 还会根据返回的 gem 数量对这些请求进行加权。 CI/CD即使 HTTP 请求速率显得很低,也可以限制并行运行的环境bundle install或gem install操作。如果您在 Ruby Gem 解析期间遇到限制,请申请增加单个 AWS 账户每秒读取请求的配额。
如果您之前固定 RubyGems 到低于 3.5.19 的版本作为 CodeArtifact 兼容性解决方法,则现在可以移除该 pin 并升级到最新版本。
CodeArtifact 不支持旧版 RubyGems 规范索引,包括specs.4.8.gzlatest_specs.4.8.gz、和prerelease_specs.4.8.gz。它们已被 Compact Index API 所取代。
正在测试压缩索引支持
要验证压缩索引解析是否适用于您的 CodeArtifact 存储库,请执行以下操作:
如果您之前固定 RubyGems 到低于 3.5.19 的版本,请移除该引脚:
gem update --system验证您的 RubyGems 和捆绑器版本:
gem --version # Should be 3.5.19 or higher bundle --version # Should be 2.4.11 or highergem install针对您的 CodeArtifact 存储库进行测试: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。