패키지 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab 패키지 API 문서.

패키지 목록

프로젝트별

프로젝트 패키지 목록을 가져옵니다. 모든 패키지 유형이 결과에 포함됩니다. 인증 없이 접근할 경우 공개 프로젝트의 패키지만 반환됩니다.

기본적으로 defaulterror 상태의 패키지가 반환됩니다. 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 상태의 패키지 작업은 잘못된 데이터나 파손된 패키지를 초래할 수 있습니다.

그룹에 대해

그룹 수준에서 프로젝트 패키지 목록을 가져옵니다.
인증 없이 접근할 경우, 공개 프로젝트의 패키지만 반환됩니다.
기본적으로 defaulterror 상태의 패키지가 반환됩니다. 다른 패키지를 보려면 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는 페이지네이션 되어 있습니다.

패키지 파이프라인 목록

단일 패키지에 대한 파이프라인 목록을 가져옵니다. 결과는 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: 패키지 또는 패키지 파일을 찾을 수 없습니다.