InfoGrab DocsInfoGrab Docs

Ruby gems API

요약

이 API를 사용하여 Ruby gems 및 Bundler 패키지 관리자 클라이언트와 상호 작용합니다. 이 API는 Ruby gems 및 Bundler 패키지 관리자 클라이언트가 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다.

이 API를 사용하여 Ruby gems 및 Bundler 패키지 관리자 클라이언트와 상호 작용합니다.

Warning

이 API는 Ruby gems 및 Bundler 패키지 관리자 클라이언트가 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다. 이 API는 개발 중이며 기능이 제한되어 프로덕션 사용에 준비되지 않았습니다.

이 엔드포인트는 표준 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 파일 다운로드#

프로젝트에 대한 지정된 gem 파일을 다운로드합니다.

GET projects/:id/packages/rubygems/gems/:file_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
file_name string .gem 파일의 이름.
curl --header "Authorization:<personal_access_token>" \
  --url "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에 기록됩니다.

gemspec 파일 다운로드#

특정 gem 버전에 대한 Marshal 형식의 gemspec 파일을 다운로드합니다.

GET projects/:id/packages/rubygems/quick/Marshal.4.8/:file_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
file_name string <gem_name>-<version>.gemspec.rz 형식의 gemspec 파일 이름.

응답은 deflate 압축된 마샬링된 Gem::Specification 객체입니다.

curl --header "Authorization:<personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/quick/Marshal.4.8/my_gem-1.0.0.gemspec.rz"

spec 인덱스 파일 다운로드#

프로젝트에 대한 RubyGems spec 인덱스 파일을 다운로드합니다. 인덱스는 프로젝트 레지스트리에서 사용할 수 있는 gem을 나열합니다.

GET projects/:id/packages/rubygems/:file_name
속성 유형 필수 설명
file_name string spec 인덱스 파일 이름: specs.4.8.gz, latest_specs.4.8.gz, 또는 prerelease_specs.4.8.gz.
id string 프로젝트의 ID 또는 전체 경로.

spec 인덱스 파일 이름에 따라 나열되는 패키지 릴리즈 버전이 결정됩니다:

  • specs.4.8.gz는 릴리즈된 버전을 나열합니다.

  • latest_specs.4.8.gz는 각 gem의 최신 릴리즈 버전을 나열합니다.

  • prerelease_specs.4.8.gz는 프리릴리즈 버전을 나열합니다.

성공하면 200 OK와 Gzip 압축된 마샬링된 [name, version, platform] 항목 배열을 반환합니다.

예시 요청:

curl --header "Authorization: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/specs.4.8.gz"

의존성 조회#

지정된 gem의 의존성 목록을 조회합니다.

응답은 요청된 gem의 모든 버전에 대한 해시의 마샬링된 배열입니다. 응답이 마샬링되어 있으므로 파일에 저장할 수 있습니다.

GET projects/:id/packages/rubygems/api/v1/dependencies
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
gems string 아니오 의존성을 가져올 gem의 쉼표로 구분된 목록.
curl --header "Authorization:<personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/dependencies?gems=my_gem,foo"

Ruby가 설치된 경우 다음 Ruby 명령을 사용하여 응답을 읽을 수 있습니다. 이것이 작동하려면 ~/.gem/credentials에 자격 증명을 설정하거나 요청에 액세스 토큰을 전달해야 합니다:

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

[{: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"]]}]

gem 업로드#

지정된 프로젝트에 gem을 업로드합니다.

POST projects/:id/packages/rubygems/api/v1/gems
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
curl --request POST \
     --upload-file path/to/my_gem_file.gem \
     --header "Authorization:<personal_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/gems"

Ruby gems API

GitLab v19.2
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 API를 사용하여 Ruby gems 및 Bundler 패키지 관리자 클라이언트와 상호 작용합니다. 이 API는 Ruby gems 및 Bundler 패키지 관리자 클라이언트가 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다.

이 API를 사용하여 Ruby gems 및 Bundler 패키지 관리자 클라이언트와 상호 작용합니다.

Warning

이 API는 Ruby gems 및 Bundler 패키지 관리자 클라이언트가 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다. 이 API는 개발 중이며 기능이 제한되어 프로덕션 사용에 준비되지 않았습니다.

이 엔드포인트는 표준 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 파일 다운로드#

프로젝트에 대한 지정된 gem 파일을 다운로드합니다.

GET projects/:id/packages/rubygems/gems/:file_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
file_name string .gem 파일의 이름.
curl --header "Authorization:<personal_access_token>" \
  --url "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에 기록됩니다.

gemspec 파일 다운로드#

특정 gem 버전에 대한 Marshal 형식의 gemspec 파일을 다운로드합니다.

GET projects/:id/packages/rubygems/quick/Marshal.4.8/:file_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
file_name string <gem_name>-<version>.gemspec.rz 형식의 gemspec 파일 이름.

응답은 deflate 압축된 마샬링된 Gem::Specification 객체입니다.

curl --header "Authorization:<personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/quick/Marshal.4.8/my_gem-1.0.0.gemspec.rz"

spec 인덱스 파일 다운로드#

프로젝트에 대한 RubyGems spec 인덱스 파일을 다운로드합니다. 인덱스는 프로젝트 레지스트리에서 사용할 수 있는 gem을 나열합니다.

GET projects/:id/packages/rubygems/:file_name
속성 유형 필수 설명
file_name string spec 인덱스 파일 이름: specs.4.8.gz, latest_specs.4.8.gz, 또는 prerelease_specs.4.8.gz.
id string 프로젝트의 ID 또는 전체 경로.

spec 인덱스 파일 이름에 따라 나열되는 패키지 릴리즈 버전이 결정됩니다:

  • specs.4.8.gz는 릴리즈된 버전을 나열합니다.

  • latest_specs.4.8.gz는 각 gem의 최신 릴리즈 버전을 나열합니다.

  • prerelease_specs.4.8.gz는 프리릴리즈 버전을 나열합니다.

성공하면 200 OK와 Gzip 압축된 마샬링된 [name, version, platform] 항목 배열을 반환합니다.

예시 요청:

curl --header "Authorization: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/specs.4.8.gz"

의존성 조회#

지정된 gem의 의존성 목록을 조회합니다.

응답은 요청된 gem의 모든 버전에 대한 해시의 마샬링된 배열입니다. 응답이 마샬링되어 있으므로 파일에 저장할 수 있습니다.

GET projects/:id/packages/rubygems/api/v1/dependencies
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
gems string 아니오 의존성을 가져올 gem의 쉼표로 구분된 목록.
curl --header "Authorization:<personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/dependencies?gems=my_gem,foo"

Ruby가 설치된 경우 다음 Ruby 명령을 사용하여 응답을 읽을 수 있습니다. 이것이 작동하려면 ~/.gem/credentials에 자격 증명을 설정하거나 요청에 액세스 토큰을 전달해야 합니다:

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

[{: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"]]}]

gem 업로드#

지정된 프로젝트에 gem을 업로드합니다.

POST projects/:id/packages/rubygems/api/v1/gems
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
curl --request POST \
     --upload-file path/to/my_gem_file.gem \
     --header "Authorization:<personal_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/1/packages/rubygems/api/v1/gems"