如何使用极狐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 文件。

相关推荐
CNRio18 小时前
智能赋能全球化:AI Agent驱动中国科技企业出海的政技融合新范式
人工智能·科技·microsoft
五仁火烧18 小时前
安装rust开发环境
开发语言·后端·rust
啊阿狸不会拉杆18 小时前
《数字图像处理》第 3 章 - 灰度变换与空间滤波
图像处理·人工智能·算法·计算机视觉·数字图像处理
Keep_Trying_Go18 小时前
统一的人群计数训练框架(PyTorch)——基于主流的密度图模型训练框架
人工智能·pytorch·python·深度学习·算法·机器学习·人群计数
Yue丶越18 小时前
【C语言】动态内存管理
c语言·开发语言
Edward1111111118 小时前
普通java项目转为maven项目 J文件后缀.java变C文件
java·开发语言·maven
赵谨言18 小时前
基于OpenCV的图像梯度与边缘检测研究
大数据·开发语言·经验分享·python
知行力18 小时前
【GitHub每日速递 20251215】微软开源12周26课机器学习入门课程,多语言支持还能离线学!
机器学习·开源·github
hans汉斯19 小时前
【软件工程与应用】平移置换搬迁系统设计与实现
数据库·人工智能·系统架构·软件工程·汉斯出版社·软件工程与应用
gugugu.19 小时前
Redis List类型完全指南:从原理到实战应用
数据库·redis·list