패키지 API
- 도입됨 GitLab 15.3에서 프로젝트 수준 API에 대한 GitLab CI/CD 작업 토큰 인증 지원.
GitLab 패키지 API 문서.
패키지 목록
프로젝트별
프로젝트 패키지 목록을 가져옵니다. 모든 패키지 유형이 결과에 포함됩니다. 인증 없이 접근할 경우 공개 프로젝트의 패키지만 반환됩니다.
기본적으로 default
및 error
상태의 패키지가 반환됩니다. status
매개변수를 사용하여 다른 패키지를 확인할 수 있습니다.
GET /projects/:id/packages
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
order_by |
문자열 | 아니요 | 정렬에 사용할 필드. created_at (기본값), name , version 또는 type 중 하나. |
sort |
문자열 | 아니요 | 정렬 방향, 오름차순일 경우 asc (기본값) 또는 내림차순일 경우 desc . |
package_type |
문자열 | 아니요 | 반환된 패키지를 유형별로 필터링. conan , maven , npm , pypi , composer , nuget , helm , terraform_module 또는 golang 중 하나. |
package_name |
문자열 | 아니요 | 이름으로模糊 검색하여 프로젝트 패키지를 필터링. |
package_version |
문자열 | 아니요 | 버전으로 프로젝트 패키지를 필터링. include_versionless 와 함께 사용 시, 버전 없는 패키지는 반환되지 않음. 도입됨 GitLab 16.6에서. |
include_versionless |
불리언 | 아니요 | true로 설정하면, 버전 없는 패키지가 응답에 포함됨. |
status |
문자열 | 아니요 | 반환된 패키지를 상태로 필터링. default , hidden , processing , error 또는 pending_destruction 중 하나. |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages"
사용 중단:
응답의
pipelines
속성은 패키지 파이프라인 목록 엔드포인트로 대체되어 사용 중단되었습니다. 이는 도입됨 GitLab 16.0에서. 패키지에 파이프라인이 없으면,pipelines
속성은 응답에 포함되지 않습니다. 그렇지 않으면,pipelines
속성은 비어 있는 배열을 반환합니다.
예제 응답:
[
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
"package_type": "maven",
"created_at": "2019-11-27T03:37:38.711Z"
},
{
"id": 2,
"name": "@foo/bar",
"version": "1.0.3",
"package_type": "npm",
"created_at": "2019-11-27T03:37:38.711Z"
},
{
"id": 3,
"name": "Hello/0.1@mycompany/stable",
"conan_package_name": "Hello",
"version": "0.1",
"package_type": "conan",
"_links": {
"web_path": "/foo/bar/-/packages/3",
"delete_api_path": "https://gitlab.example.com/api/v4/projects/1/packages/3"
},
"created_at": "2029-12-16T20:33:34.316Z",
"tags": []
}
]
기본적으로 GET
요청은 20개의 결과를 반환합니다. 왜냐하면 API가 페이지 매김 되기 때문입니다.
상태로 패키지를 필터링할 수 있지만, processing
상태의 패키지 작업은 잘못된 데이터나 파손된 패키지를 초래할 수 있습니다.
그룹에 대해
그룹 수준에서 프로젝트 패키지 목록을 가져옵니다.
인증 없이 접근할 경우, 공개 프로젝트의 패키지만 반환됩니다.
기본적으로 default
및 error
상태의 패키지가 반환됩니다. 다른 패키지를 보려면 status
매개변수를 사용하세요.
GET /groups/:id/packages
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
integer/string | 예 | 그룹의 ID 또는 URL 인코딩된 경로. |
exclude_subgroups |
boolean | 아니요 | 이 매개변수가 true로 포함될 경우, 서브 그룹의 프로젝트에서 패키지가 나열되지 않습니다. 기본값은 false 입니다. |
order_by |
string | 아니요 | 정렬에 사용할 필드. created_at (기본값), name , version , type , 또는 project_path 중 하나입니다. |
sort |
string | 아니요 | 정렬의 방향, 오름차순의 경우 asc (기본값) 또는 내림차순의 경우 desc 입니다. |
package_type |
string | 아니요 | 반환된 패키지를 유형별로 필터링합니다. conan , maven , npm , pypi , composer , nuget , helm , 또는 golang 중 하나입니다. |
package_name |
string | 아니요 | 이름으로 프로젝트 패키지를 퍼지 검색으로 필터링합니다. |
package_version |
string | 아니요 | 반환된 패키지를 버전별로 필터링합니다. include_versionless 와 함께 사용할 경우, 버전 없는 패키지는 반환되지 않습니다. 도입됨 in GitLab 16.6. |
include_versionless |
boolean | 아니요 | true로 설정할 경우, 버전 없는 패키지가 응답에 포함됩니다. |
status |
string | 아니요 | 반환된 패키지를 상태로 필터링합니다. default , hidden , processing , error , 또는 pending_destruction 중 하나입니다. |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/packages?exclude_subgroups=false"
사용 중단:
응답의
pipelines
속성은 리스트 패키지 파이프라인 엔드포인트로 대체되었습니다. 이는 도입됨 in GitLab 16.0. 패키지에 파이프라인이 없으면pipelines
속성은 응답에 포함되지 않습니다. 그렇지 않은 경우,pipelines
속성은 빈 배열을 반환합니다.
예시 응답:
[
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
"package_type": "maven",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
},
"created_at": "2019-11-27T03:37:38.711Z",
"pipelines": [
{
"id": 123,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "Administrator",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"
}
}
]
},
{
"id": 2,
"name": "@foo/bar",
"version": "1.0.3",
"package_type": "npm",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
},
"created_at": "2019-11-27T03:37:38.711Z",
"pipelines": [
{
"id": 123,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "Administrator",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"
}
}
]
}
]
기본적으로 GET
요청은 20개의 결과를 반환하며, API는 페이지네이션되어 있습니다.
_links
객체는 다음 속성을 포함합니다:
-
web_path
: GitLab에서 패키지의 세부 정보를 확인할 수 있는 경로입니다. -
delete_api_path
: 패키지를 삭제하기 위한 API 경로입니다. 요청 사용자가 이를 수행할 수 있는 권한이 있는 경우에만 제공됩니다.
패키지를 상태별로 필터링할 수 있지만, processing
상태의 패키지로 작업하는 것은 잘못된 데이터 또는 손상된 패키지를 초래할 수 있습니다.
프로젝트 패키지 가져오기
단일 프로젝트 패키지를 가져옵니다. 상태가 default
인 패키지만 반환됩니다.
GET /projects/:id/packages/:package_id
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로입니다. |
package_id |
정수 | 예 | 패키지의 ID입니다. |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"
사용 중단:
응답의
pipelines
속성은 패키지 파이프라인 목록 엔드포인트를 대체하기 위해 사용 중단되었으며, 이는 GitLab 16.0에서 도입되었습니다. 패키지에 파이프라인이 없는 경우, 응답에pipelines
속성이 포함되지 않습니다. 그렇지 않은 경우,pipelines
속성은 빈 배열을 반환합니다.
예시 응답:
{
"id": 1,
"name": "com/mycompany/my-app",
"version": "1.0-SNAPSHOT",
"package_type": "maven",
"_links": {
"web_path": "/namespace1/project1/-/packages/1",
"delete_api_path": "/namespace1/project1/-/packages/1"
},
"created_at": "2019-11-27T03:37:38.711Z",
"last_downloaded_at": "2022-09-07T07:51:50.504Z",
"pipelines": [
{
"id": 123,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "관리자",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"
}
}
],
"versions": [
{
"id":2,
"version":"2.0-SNAPSHOT",
"created_at":"2020-04-28T04:42:11.573Z",
"pipelines": [
{
"id": 234,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/58",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "관리자",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"
}
}
]
}
]
}
_links
객체는 다음 속성을 포함합니다:
-
web_path
: GitLab에서 패키지의 세부정보를 확인할 수 있는 경로입니다. 패키지의 상태가default
인 경우에만 사용 가능합니다. -
delete_api_path
: 패키지를 삭제하기 위한 API 경로입니다. 요청 사용자가 이를 수행할 권한이 있는 경우에만 사용 가능합니다.
패키지 파일 목록
단일 패키지의 패키지 파일 목록을 가져옵니다.
GET /projects/:id/packages/:package_id/package_files
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩 경로 |
package_id |
integer | 예 | 패키지의 ID입니다. |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/package_files"
예시 응답:
[
{
"id": 25,
"package_id": 4,
"created_at": "2018-11-07T15:25:52.199Z",
"file_name": "my-app-1.5-20181107.152550-1.jar",
"size": 2421,
"file_md5": "58e6a45a629910c6ff99145a688971ac",
"file_sha1": "ebd193463d3915d7e22219f52740056dfd26cbfe",
"file_sha256": "a903393463d3915d7e22219f52740056dfd26cbfeff321b",
"pipelines": [
{
"id": 123,
"status": "pending",
"ref": "new-pipeline",
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
"web_url": "https://example.com/foo/bar/pipelines/47",
"created_at": "2016-08-11T11:28:34.085Z",
"updated_at": "2016-08-11T11:32:35.169Z",
"user": {
"name": "Administrator",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon"
}
}
]
},
{
"id": 26,
"package_id": 4,
"created_at": "2018-11-07T15:25:56.776Z",
"file_name": "my-app-1.5-20181107.152550-1.pom",
"size": 1122,
"file_md5": "d90f11d851e17c5513586b4a7e98f1b2",
"file_sha1": "9608d068fe88aff85781811a42f32d97feb440b5",
"file_sha256": "2987d068fe88aff85781811a42f32d97feb4f092a399"
},
{
"id": 27,
"package_id": 4,
"created_at": "2018-11-07T15:26:00.556Z",
"file_name": "maven-metadata.xml",
"size": 767,
"file_md5": "6dfd0cce1203145a927fef5e3a1c650c",
"file_sha1": "d25932de56052d320a8ac156f745ece73f6a8cd2",
"file_sha256": "ac849d002e56052d320a8ac156f745ece73f6a8cd2f3e82"
}
]
기본적으로 GET
요청은 20개의 결과를 반환합니다. API는 페이지네이션 되어 있습니다.
패키지 파이프라인 목록
- 도입됨 GitLab 16.1에서.
단일 패키지에 대한 파이프라인 목록을 가져옵니다. 결과는 id
기준으로 내림차순 정렬됩니다.
결과는 페이지네이션되어 있으며 페이지당 최대 20개의 레코드를 반환합니다.
GET /projects/:id/packages/:package_id/pipelines
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로 |
package_id |
integer | 예 | 패키지의 ID. |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/pipelines"
예시 응답:
[
{
"id": 1,
"iid": 1,
"project_id": 9,
"sha": "2b6127f6bb6f475c4e81afcc2251e3f941e554f9",
"ref": "mytag",
"status": "failed",
"source": "push",
"created_at": "2023-02-01T12:19:21.895Z",
"updated_at": "2023-02-01T14:00:05.922Z",
"web_url": "http://gdk.test:3001/feature-testing/composer-repository/-/pipelines/1",
"user": {
"id": 1,
"username": "root",
"name": "Administrator",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url": "http://gdk.test:3001/root"
}
},
{
"id": 2,
"iid": 2,
"project_id": 9,
"sha": "e564015ac6cb3d8617647802c875b27d392f72a6",
"ref": "main",
"status": "canceled",
"source": "push",
"created_at": "2023-02-01T12:23:23.694Z",
"updated_at": "2023-02-01T12:26:28.635Z",
"web_url": "http://gdk.test:3001/feature-testing/composer-repository/-/pipelines/2",
"user": {
"id": 1,
"username": "root",
"name": "Administrator",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url": "http://gdk.test:3001/root"
}
}
]
프로젝트 패키지 삭제
프로젝트 패키지를 삭제합니다.
DELETE /projects/:id/packages/:package_id
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로 |
package_id |
integer | 예 | 패키지의 ID. |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"
다음 상태 코드를 반환할 수 있습니다:
-
204 No Content
, 패키지가 성공적으로 삭제된 경우. -
404 Not Found
, 패키지를 찾을 수 없는 경우.
요청 전달이 활성화된 경우, 패키지를 삭제하면 의존성 혼란 위험을 초래할 수 있습니다.
패키지 파일 삭제
경고:
패키지 파일을 삭제하면 패키지가 손상되어 사용 불가능하거나 패키지 관리자 클라이언트에서 다운로드할 수 없게 될 수 있습니다. 패키지 파일을 삭제할 때는 자신이 무엇을 하고 있는지 확실히 이해하고 있어야 합니다.
패키지 파일 삭제:
DELETE /projects/:id/packages/:package_id/package_files/:package_file_id
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩 경로. |
package_id |
정수 | 예 | 패키지의 ID. |
package_file_id |
정수 | 예 | 패키지 파일의 ID. |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id/package_files/:package_file_id"
다음 상태 코드를 반환할 수 있습니다:
-
204 No Content
: 패키지가 성공적으로 삭제되었습니다. -
403 Forbidden
: 사용자가 파일 삭제 권한이 없습니다. -
404 Not Found
: 패키지 또는 패키지 파일을 찾을 수 없습니다.