Help us learn about your current experience with the documentation. Take the survey.
Ruby gems API
- 版本:免费版、专业版、旗舰版
- 产品:GitLab 自助管理版、GitLab 专属版
这是 Ruby gems 的 API 文档。
此 API 供 Ruby gems 和 Bundler 包管理器客户端 使用,通常不建议手动调用。由于功能有限,此 API 目前仍在开发中,尚未准备好用于生产环境。
有关如何从 GitLab 包仓库上传和安装 gem 的说明,请参阅 Ruby gems 仓库文档。
这些终端节点不遵循标准的 API 身份验证方法。有关支持的请求头和令牌类型的详细信息,请参阅 Ruby gems 仓库文档。未在文档中说明的身份验证方法将来可能会被移除。
启用 Ruby gems API
GitLab 的 Ruby gems API 默认处于功能标志(feature flag)的保护之下,且默认为禁用状态。拥有 GitLab Rails console 访问权限的 GitLab 管理员可以为您的实例启用此 API。
要启用它:
Feature.enable(:rubygem_packages)要禁用它:
Feature.disable(:rubygem_packages)为特定项目启用或禁用它:
Feature.enable(:rubygem_packages, Project.find(1))
Feature.disable(:rubygem_packages, Project.find(2))下载 gem 文件
下载一个 gem:
GET projects/:id/packages/rubygems/gems/:file_name| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
string | 是 | 项目的 ID 或完整路径。 |
file_name |
string | 是 | .gem 文件的名称。 |
curl --header "Authorization:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/gems/my_gem-1.0.0.gem"将输出写入文件:
curl --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 列表的依赖项:
GET projects/:id/packages/rubygems/api/v1/dependencies| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
string | 是 | 项目的 ID 或完整路径。 |
gems |
string | 否 | 需要获取依赖项的、以逗号分隔的 gem 列表。 |
curl --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 中设置您的凭据:
$ ruby -ropen-uri -rpp -e \
'pp Marshal.load(open("https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/dependencies?gems=my_gem,rails,foo"))'
[{:name=>"my_gem", :number=>"0.0.1", :platform=>"ruby", :dependencies=>[]},
{:name=>"my_gem",
:number=>"0.0.3",
:platform=>"ruby",
:dependencies=>
[["dependency_1", "~> 1.2.3"],
["dependency_2", "= 3.0.0"],
["dependency_3", ">= 1.0.0"],
["dependency_4", ">= 0"]]},
{:name=>"my_gem",
:number=>"0.0.2",
:platform=>"ruby",
:dependencies=>
[["dependency_1", "~> 1.2.3"],
["dependency_2", "= 3.0.0"],
["dependency_3", ">= 1.0.0"],
["dependency_4", ">= 0"]]},
{:name=>"foo",
:number=>"0.0.2",
:platform=>"ruby",
:dependencies=>
["dependency_2", "= 3.0.0"],
["dependency_4", ">= 0"]]}]这会将下载的文件写入当前目录下的 mypkg-1.0-SNAPSHOT.jar。
上传 gem
上传一个 gem:
POST projects/:id/packages/rubygems/api/v1/gems| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
string | 是 | 项目的 ID 或完整路径。 |
curl --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"