極狐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_registry
、write_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
文件。