当前位置: 首页 > news >正文

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

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

  • 极狐GitLab 中文文档
  • 极狐GitLab 中文论坛
  • 极狐GitLab 官网

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


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

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

启用 Ruby gems 库

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

Feature.enable(:rubygem_packages)

禁用:

Feature.disable(:rubygem_packages)

为特定项目启用或禁用:

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 文件并添加:

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

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

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

# assuming a my_gem.gemspec file is present in the repository with the version currently set to 0.0.1
image: rubyrun: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 filescript:- 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 大小为 3 GB。

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

gem push my_gem-0.0.1.gem --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,请转到您项目的 软件包和镜像库 页面。推送到极狐GitLab 的 Gems 不会立即显示在您项目的 Packages UI 中。处理 gem 最多可能需要 10 分钟。

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

如果已存在具有相同名称和版本的包,您可以推送 gem。
两者都在 UI 中可见且可访问。但是,只有最近推送的 gem 用于安装。

安装 Ruby gem


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

相关文章:

  • 3.2.3 掌握RDD转换算子 - 2. 过滤算子 - filter()
  • 按摩椅的机芯类型和材质
  • vue中router和route的区别
  • 矿井设备通信破局:ModbusTCP转DeviceNet网关应用实践
  • 2025年3月青少年机器人技术等级考试(二级)实际操作真题试卷
  • 从单智到多智:深度拆解基于MetaGPT的智能体辩论
  • Kafka消息不丢失处理
  • leetcode 3342. 到达最后一个房间的最少时间 II 中等
  • IC ATE集成电路测试学习——PLL测试(一)
  • 2025年前端在线协同编辑技术研究
  • 使用Compose编排工具搭建Ghost博客系统
  • 《易语言学习大全》
  • maven如何搭建自己的私服(LINUX版)?
  • ubuntu 22.04 换源
  • Java内存分配
  • 天选5Pro(锐龙版)设备声音、显卡消失等问题完整解决记录
  • C++使用PoDoFo库处理PDF文件
  • WPF实时调试的一种实现方法
  • 推测式思维树:让大模型快速完成复杂推理
  • 探索网络设备安全:Shodan 的原理与合法应用
  • 雇来的“妈妈”:为入狱雇主无偿带娃4年,没做好准备说再见
  • 司法部:持续规范行政执法行为,加快制定行政执法监督条例
  • 从“重规模”向“重回报”转变,公募基金迎系统性改革
  • 水中托举救出落水孩童后遇难,42岁退役军人高武被确认为见义勇为
  • 抗战回望20︱《山西省战区抗敌行政工作检讨会议议决案》:“强民政治”、“说服行政”
  • 无人机穿越大理崇圣寺千年古塔时“炸机”,当地:肇事者已找到,将被追责