Ruby gems API

Ruby gemsのAPIドキュメントです。

caution
このAPIはRuby gemsとBundlerパッケージマネージャークライアントによって使用され、一般的に手動での使用は想定されていません。このAPIは開発中であり、機能が制限されているため本番環境での使用には適していません。

GitLab パッケージレジストリから gems をアップロードしてインストールする方法については、Ruby gems レジストリのドキュメントを参照してください。

note
これらのエンドポイントは、標準 API の認証方式に準拠していません。サポートしているヘッダやトークンの型についての詳細はRuby gems レジストリのドキュメント を参照ください。文書化されていない認証方式は、将来的に削除される可能性があります。

Ruby gems API の有効化

GitLabのRuby gems APIは機能フラグの後ろにあり、デフォルトでは無効になっています。GitLab RailsコンソールにアクセスできるGitLab管理者は、インスタンスに対してこのAPIを有効にすることができます。

有効にするには:

Feature.enable(:rubygem_packages)

無効化するには:

Feature.disable(:rubygem_packages)

特定のプロジェクトで有効または無効にします:

Feature.enable(:rubygem_packages, Project.find(1))
Feature.disable(:rubygem_packages, Project.find(2))

gemファイルのダウンロード

GitLab 13.10 で導入されました。

gem をダウンロードしてください:

GET projects/:id/packages/rubygems/gems/:file_name
属性種類必須説明
id文字列です。yesプロジェクトのIDまたはフルパス。
file_name文字列です。yes .gem ファイルの名前。
curl --header "Authorization:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/gems/my_gem-1.0.0.gem"

出力をファイルに書き込みます:

curl --header "Authorization:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/gems/my_gem-1.0.0.gem" >> my_gem-1.0.0.gem

ダウンロードしたファイルをカレントディレクトリのmy_gem-1.0.0.gem に書き込みます。

依存関係のリストの取得

GitLab 13.10 で導入されました。

gemの依存関係のリストを取得します:

GET projects/:id/packages/rubygems/api/v1/dependencies
属性種類必須説明
id文字列です。yesプロジェクトのIDまたはフルパス。
gems文字列です。いいえ依存関係を取得するgemのカンマ区切りリスト。
curl --header "Authorization:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/dependencies?gems=my_gem,foo"

このエンドポイントは、要求されたgemのすべてのバージョンのハッシュのマーシャリングされた配列を返します。レスポンスはマーシャリングされているので、ファイルに保存できます。Rubyがインストールされていれば、以下のRubyコマンドを使ってレスポンスを読み込むことができます。これを動作させるには、 ~/.gem/credentialsに認証情報を設定する必要があります:

$ ruby -ropen-uri -rpp -e \
  'pp Marshal.load(open("https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/dependencies?gems=my_gem,rails,foo"))'

[{:name=>"my_gem", :number=>"0.0.1", :platform=>"ruby", :dependencies=>[]},
 {:name=>"my_gem",
  :number=>"0.0.3",
  :platform=>"ruby",
  :dependencies=>
   [["dependency_1", "~> 1.2.3"],
    ["dependency_2", "= 3.0.0"],
    ["dependency_3", ">= 1.0.0"],
    ["dependency_4", ">= 0"]]},
 {:name=>"my_gem",
  :number=>"0.0.2",
  :platform=>"ruby",
  :dependencies=>
   [["dependency_1", "~> 1.2.3"],
    ["dependency_2", "= 3.0.0"],
    ["dependency_3", ">= 1.0.0"],
    ["dependency_4", ">= 0"]]},
 {:name=>"foo",
  :number=>"0.0.2",
  :platform=>"ruby",
  :dependencies=>
    ["dependency_2", "= 3.0.0"],
    ["dependency_4", ">= 0"]]}]

ダウンロードしたファイルをカレントディレクトリのmypkg-1.0-SNAPSHOT.jar に書き込みます。

gemのアップロード

GitLab 13.11 で導入されました。

gemのアップロード

POST projects/:id/packages/rubygems/api/v1/gems
属性種類必須説明
id文字列です。yesプロジェクトのIDまたはフルパス。
curl --request POST \
     --upload-file path/to/my_gem_file.gem \
     --header "Authorization:<personal_access_token>" \
     "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/gems"