Ruby gems API
GitLab v19.2Offering: GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 Ruby gems 및 Bundler 패키지 관리자 클라이언트와 상호 작용합니다. 이 API는 Ruby gems 및 Bundler 패키지 관리자 클라이언트가 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다.
이 API를 사용하여 Ruby gems 및 Bundler 패키지 관리자 클라이언트와 상호 작용합니다.
이 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"