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

向包注册表进行身份验证

在您能够与包注册表交互之前,必须先进行身份验证。

为此,您可以使用:

例如:

使用访问令牌进行身份验证:

  • 创建或编辑您的 ~/.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

先决条件:

为此:

  • 运行如下命令:

    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 文件以供本地使用。

为此:

  1. 在左侧边栏,选择 Search or go to 并找到您的项目。
  2. 选择 Deploy > Package registry
  3. 选择包名称和版本。
  4. Assets 下,选择您要下载的 Ruby gem。

您还可以 使用 API 下载 Ruby gem。

相关主题