Help us learn about your current experience with the documentation. Take the survey.
包注册表中的 Ruby gems
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
- Status: Experiment
The availability of this feature is controlled by a feature flag. For more information, see the history. This feature is available for testing, but not ready for production use.
您可以将 Ruby gems 发布到项目的包注册表中。然后,您可以从 UI 或通过 API 下载它们。
此功能是一个 实验性功能。 有关此功能开发的更多信息,请参见 epic 3200。
向包注册表进行身份验证
在您能够与包注册表交互之前,必须先进行身份验证。
为此,您可以使用:
- 一个 个人访问令牌,作用域设置为
api。 - 一个 部署令牌,作用域设置为
read_package_registry、write_package_registry或两者。 - 一个 CI/CD 作业令牌。
例如:
使用访问令牌进行身份验证:
-
创建或编辑您的
~/.gem/credentials文件,并添加:--- https://gitlab.example.com/api/v4/projects/<project_id>/packages/rubygems: '<token>'
在此示例中:
<token>必须是您的个人访问令牌或部署令牌的令牌值。<project_id>显示在 项目概览页面 上。
使用 CI/CD 作业令牌进行身份验证:
-
创建或编辑您的
.gitlab-ci.yml文件,并添加:# 假设仓库中存在 my_gem.gemspec 文件,当前版本设置为 0.0.1 image: ruby run: before_script: - mkdir ~/.gem - echo "---" > ~/.gem/credentials - | echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/rubygems: '${CI_JOB_TOKEN}'" >> ~/.gem/credentials - chmod 0600 ~/.gem/credentials # rubygems 要求凭证文件具有 0600 权限 script: - gem build my_gem - gem push my_gem-0.0.1.gem --host ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/rubygems您还可以在提交到 GitLab 的
~/.gem/credentials文件中使用CI_JOB_TOKEN:--- https://gitlab.example.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/rubygems: '${env.CI_JOB_TOKEN}'
推送 Ruby gem
先决条件:
- 您必须 向包注册表进行身份验证。
- 您的 Ruby gem 必须小于或等于 3 GB。
为此:
-
运行如下命令:
gem push my_gem-0.0.1.gem --host <host>在此示例中,
<host>是您设置身份验证时使用的 URL。例如:gem push my_gem-0.0.1.gem --host https://gitlab.example.com/api/v4/projects/1/packages/rubygems
当 gem 成功发布时,会显示如下消息:
Pushing gem to https://gitlab.example.com/api/v4/projects/1/packages/rubygems...
{"message":"201 Created"}gem 会发布到您的包注册表中,并显示在 Packages and registries 页面上。 GitLab 处理并显示您的 gem 可能需要最多 10 分钟。
推送具有相同名称或版本的 gem
如果已存在相同名称和版本的包,您仍然可以推送 gem。 两者在 UI 中都可见且可访问。
下载 gem
您不能从 GitLab 包注册表安装 Ruby gem。但是,您可以下载 gem 文件以供本地使用。
为此:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Deploy > Package registry。
- 选择包名称和版本。
- 在 Assets 下,选择您要下载的 Ruby gem。
您还可以 使用 API 下载 Ruby gem。