如何使用极狐GitLab 软件包仓库功能托管 ruby?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:

软件包库中的 Ruby gems (BASIC ALL)


WARNING:Ruby gems 软件包库正在开发中,由于功能有限,尚未准备好用于生产。

您可以在项目的软件包库中发布 Ruby gem,然后在需要将它们用作依赖项时安装它们。尽管您可以将 gem 推送到软件包库,但不能从库里安装它们。但是,您可以直接从软件宝库的 UI 下载 gem 文件,或者使用 API。

启用 Ruby gems 库

Ruby gems 库背后有一个默认禁用的功能标志。可以访问 GitLab Rails 控制台的 GitLab 管理员可以为您的实例启用此库。

启用:

clike 复制代码
Feature.enable(:rubygem_packages)

禁用:

clike 复制代码
Feature.disable(:rubygem_packages)

为特定项目启用或禁用:

clike 复制代码
Feature.enable(:rubygem_packages, Project.find(1))
Feature.disable(:rubygem_packages, Project.find(2))

创建 Ruby gem

如果您在创建 Ruby gem 时需要帮助,请参阅 RubyGems 文档。

向软件包库进行身份验证


在推送到软件包库之前,您必须进行身份验证。

为此,您可以使用:

  • 个人访问令牌,范围设置为 api

  • 部署令牌,其范围设置为 read_package_registrywrite_package_registry 或两者均有。

  • CI 作业令牌。

使用个人访问令牌或部署令牌进行身份验证

要使用个人访问令牌进行身份验证,请创建或编辑 ~/.gem/credentials 文件并添加:

clike 复制代码
---
https://gitlab.example.com/api/v4/projects/<project_id>/packages/rubygems: '<your token>'
  • <your token> 必须是您的个人访问令牌或部署令牌的令牌值。
  • 您的项目 ID 在您的项目主页上。

使用 CI 作业令牌进行身份验证

要在 GitLab CI/CD 中使用 RubyGems 命令,您可以使用 CI_JOB_TOKEN 代替个人访问令牌或部署令牌。

例如:

clike 复制代码
# assuming a my_gem.gemspec file is present in the repository with the version currently set to 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 requires 0600 permissions on the credentials file
  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

clike 复制代码
---
https://gitlab.example.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/rubygems: '${env.CI_JOB_TOKEN}'

推送 Ruby gem


先决条件:

  • 您必须向软件包库进行身份验证。
  • 允许的最大 gem 大小为 3 GB。

要推送您的 gem,请运行如下命令:

clike 复制代码
gem push my_gem-0.0.1.gem --host <host>

请注意, 是您在设置身份验证时使用的 URL。例如:

clike 复制代码
gem push my_gem-0.0.1.gem --host https://gitlab.example.com/api/v4/projects/1/packages/rubygems

此消息表示 gem 上传成功:

clike 复制代码
Pushing gem to https://gitlab.example.com/api/v4/projects/1/packages/rubygems...
{"message":"201 Created"}

要查看已发布的 gem,请转到您项目的 软件包和镜像库 页面。推送到极狐GitLab 的 Gems 不会立即显示在您项目的 Packages UI 中。处理 gem 最多可能需要 10 分钟。

推送具有相同名称或版本的 gem

如果已存在具有相同名称和版本的包,您可以推送 gem。

两者都在 UI 中可见且可访问。但是,只有最近推送的 gem 用于安装。

安装 Ruby gem


GitLab 的 Ruby gems 库正在开发中,尚未准备好用于生产。您不能从库中安装 Gems。但是,您可以直接从 UI 或使用 API 下载 .gem 文件。

相关推荐
胡西风_foxww2 小时前
Java的extends通配符
java·开发语言·通配符·extends
胡萝卜的兔2 小时前
golang -gorm 增删改查操作,事务操作
开发语言·后端·golang
屁股割了还要学2 小时前
快速过一遍Python基础语法
开发语言·python·学习·青少年编程
kikikidult3 小时前
Ubuntu20.04运行openmvg和openmvs实现三维重建(未成功,仅供参考)
人工智能·笔记·ubuntu·计算机视觉
189228048613 小时前
NW728NW733美光固态闪存NW745NW746
大数据·服务器·网络·人工智能·性能优化
大模型最新论文速读4 小时前
模拟注意力:少量参数放大 Attention 表征能力
人工智能·深度学习·机器学习·语言模型·自然语言处理
武当豆豆4 小时前
C++编程学习阶段性总结
开发语言·c++
lishaoan774 小时前
用TensorFlow进行逻辑回归(二)
人工智能·tensorflow·逻辑回归
学不动CV了4 小时前
C语言32个关键字
c语言·开发语言·arm开发·单片机·算法
慌ZHANG4 小时前
智慧气象新范式:人工智能如何重构城市级气象服务生态?
人工智能