Ruby gems API
Ruby gemsのAPIドキュメントです。
GitLab パッケージレジストリから gems をアップロードしてインストールする方法については、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"