Ruby gems API
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
这是 Ruby gems 的 API 文档。
此 API 由 [Ruby gems 和 Bundler 软件包管理器客户端](https://maven.apache.org/) 使用,通常不适合手动使用。由于功能有限,此 API 正在开发中,尚未准备好用于生产环境。
有关如何从极狐GitLab 软件包注册表上传和安装 gems 的说明,请参阅 Ruby gems 注册表文档。
这些端点不遵循标准 API 认证方法。有关支持的标头和令牌类型的详细信息,请参阅 [Ruby gems 注册表文档](../../user/packages/rubygems_registry/_index.md)。未来可能会删除未记录的认证方法。
启用 Ruby gems API
极狐GitLab 的 Ruby gems API 受默认禁用的功能标志控制。具有极狐GitLab Rails 控制台访问权限的极狐GitLab 管理员可以为您的实例启用此 API。
启用方法:
rubyFeature.enable(:rubygem_packages)
禁用方法:
rubyFeature.disable(:rubygem_packages)
为特定项目启用或禁用:
rubyFeature.enable(:rubygem_packages, Project.find(1)) Feature.disable(:rubygem_packages, Project.find(2))
下载 gem 文件
下载 gem:
plaintextGET projects/:id/packages/rubygems/gems/:file_name
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 项目的 ID 或完整路径。 |
| file_name | string | 是 | .gem 文件的名称。 |
shellcurl --header "Authorization:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/gems/my_gem-1.0.0.gem"
将输出写入文件:
shellcurl --header "Authorization:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/gems/my_gem-1.0.0.gem" >> my_gem-1.0.0.gem
这会将下载的文件写入当前目录中的 my_gem-1.0.0.gem。
获取依赖列表
获取 gem 的依赖列表:
plaintextGET projects/:id/packages/rubygems/api/v1/dependencies
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 项目的 ID 或完整路径。 |
| gems | string | 否 | 用逗号分隔的 gem 列表,用于获取依赖项。 |
shellcurl --header "Authorization:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/dependencies?gems=my_gem,foo"
此端点返回所请求 gem 的所有版本的哈希编组数组。由于响应是编组的,您可以将其存储在文件中。如果安装了 Ruby,您可以使用以下 Ruby 命令来读取响应。要使其工作,您必须在 ~/.gem/credentials 中设置您的凭证:
shell1$ ruby -ropen-uri -rpp -e \ 2 'pp Marshal.load(open("https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/dependencies?gems=my_gem,rails,foo"))' 3 4[{:name=>"my_gem", :number=>"0.0.1", :platform=>"ruby", :dependencies=>[]}, 5 {:name=>"my_gem", 6 :number=>"0.0.3", 7 :platform=>"ruby", 8 :dependencies=> 9 [["dependency_1", "~> 1.2.3"], 10 ["dependency_2", "= 3.0.0"], 11 ["dependency_3", ">= 1.0.0"], 12 ["dependency_4", ">= 0"]]}, 13 {:name=>"my_gem", 14 :number=>"0.0.2", 15 :platform=>"ruby", 16 :dependencies=> 17 [["dependency_1", "~> 1.2.3"], 18 ["dependency_2", "= 3.0.0"], 19 ["dependency_3", ">= 1.0.0"], 20 ["dependency_4", ">= 0"]]}, 21 {:name=>"foo", 22 :number=>"0.0.2", 23 :platform=>"ruby", 24 :dependencies=> 25 ["dependency_2", "= 3.0.0"], 26 ["dependency_4", ">= 0"]]}]
这会将下载的文件写入当前目录中的 mypkg-1.0-SNAPSHOT.jar。
上传 gem
上传 gem:
plaintextPOST projects/:id/packages/rubygems/api/v1/gems
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 项目的 ID 或完整路径。 |
shellcurl --request POST \ --upload-file path/to/my_gem_file.gem \ --header "Authorization:<personal_access_token>" \ "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/gems"