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

相关推荐
C.er11 分钟前
Git回顾
git
yz1.11 分钟前
[sklearn] 特征工程
python·机器学习·sklearn
hello_ejb32 小时前
聊聊Spring AI Alibaba的SentenceSplitter
人工智能·python·spring
TPBoreas3 小时前
Jenkins 改完端口号启动不起来了
java·开发语言
gadiaola3 小时前
MySQL从入门到精通(三):MySQL数据类型、SQL语言—DDL
数据库·sql·mysql·database
TE-茶叶蛋3 小时前
Vuerouter 的底层实现原理
开发语言·javascript·ecmascript
摸鱼仙人~4 小时前
机器学习常用评价指标
人工智能·机器学习
云闲不收4 小时前
设计模式原则
开发语言
秋名RG4 小时前
深入解析建造者模式(Builder Pattern)——以Java实现复杂对象构建的艺术
java·开发语言·建造者模式
技术求索者5 小时前
c++学习
开发语言·c++·学习