Conan API

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

이 문서는 Conan Packages의 API 문서입니다.

caution
이 API는 Conan package manager client에서 사용되며 일반적으로 수동으로 사용되지 않습니다.

GitLab 패키지 레지스트리에서 Conan 패키지를 업로드하고 설치하는 방법은 Conan package registry documentation를 참조하세요.

note
이 엔드포인트는 표준 API 인증 방법을 준수하지 않습니다. 자격 증명이 어떻게 전달되어야 하는지에 대한 자세한 내용은 각 라우트를 참조하십시오. 문서화되지 않은 인증 방법은 향후 제거될 수 있습니다.
note
Conan 레지스트리는 FIPS(연방 정보 처리 표준) 준수를 충족시키지 않으며 FIPS 모드가 활성화된 경우 비활성화됩니다. 이러한 엔드포인트는 모두 404 Not Found를 반환합니다.

Route prefix

두 개의 동일한 라우트 세트가 있으며 각각 다른 범위에서 요청을 수행합니다:

  • 인스턴스 수준의 픽스를 사용하여 전체 GitLab 인스턴스 범위에서 요청을 수행합니다.
  • 프로젝트 수준의 접두사를 사용하여 단일 프로젝트 범위에서 요청을 수행합니다.

이 문서의 예제는 모두 인스턴스 수준의 접두사를 사용합니다.

인스턴스 수준

/packages/conan/v1

인스턴스 수준 라우트를 사용할 때 Conan 레시피에 대한 이름 제한이 있음을 유의하십시오.

프로젝트 수준

 /projects/:id/packages/conan/v1`
속성 유형 필수 여부 설명
id string yes 프로젝트 ID 또는 전체 프로젝트 경로입니다.

ping

  • GitLab 12.2에 도입됨.

GitLab Conan 레지스트리를 핑하여 가용성을 확인합니다.

GET <route-prefix>/ping
curl "https://gitlab.example.com/api/v4/packages/conan/v1/ping"

예시 응답:

""
  • GitLab 12.4에 도입됨.

이름에 따라 Conan 패키지를 인스턴스에서 검색합니다.

GET <route-prefix>/conans/search
속성 유형 필수 여부 설명
q string yes 검색 쿼리입니다. *를 와일드카드로 사용할 수 있습니다.
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/packages/conan/v1/conans/search?q=Hello*"

예시 응답:

{
  "results": [
    "Hello/0.1@foo+conan_test_prod/beta",
    "Hello/0.1@foo+conan_test_prod/stable",
    "Hello/0.2@foo+conan_test_prod/beta",
    "Hello/0.3@foo+conan_test_prod/beta",
    "Hello/0.1@foo+conan-reference-test/stable",
    "HelloWorld/0.1@baz+conan-reference-test/beta"
    "hello-world/0.4@buz+conan-test/alpha"
  ]
}

Authenticate

  • GitLab 12.2에 도입됨.

Conan 요청에 사용할 JWT를 반환하여 Bearer 헤더에서 사용합니다.

"Authorization: Bearer <token>

Conan 패키지 매니저 클라이언트는 자동으로 이 토큰을 사용합니다.

GET <route-prefix>/users/authenticate
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/packages/conan/v1/users/authenticate"

예시 응답:

eyJhbGciOiJIUzI1NiIiheR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdG9rZW4iOjMyMTQyMzAsqaVzZXJfaWQiOjQwNTkyNTQsImp0aSI6IjdlNzBiZTNjLWFlNWQtNDEyOC1hMmIyLWZiOThhZWM0MWM2OSIsImlhd3r1MTYxNjYyMzQzNSwibmJmIjoxNjE2NjIzNDMwLCJleHAiOjE2MTY2MjcwMzV9.QF0Q3ZIB2GW5zNKyMSIe0HIFOITjEsZEioR-27Rtu7E

Check Credentials

  • GitLab 12.4에 도입됨.

Basic Auth 자격 증명 또는 /authenticate에서 생성된 Conan JWT의 유효성을 확인합니다.

GET <route-prefix>/users/check_credentials
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/users/check_credentials

예시 응답:

ok

레시피 스냅샷

  • GitLab 12.5에서 소개되었습니다.

지정된 Conan 레시피의 파일 스냅샷을 반환합니다. 스냅샷은 연결된 md5 해시를 가진 파일 이름 목록입니다.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel
속성 유형 필수 설명
package_name string yes 패키지 이름
package_version string yes 패키지 버전
package_username string yes 패키지의 Conan 사용자 이름. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string yes 패키지의 채널
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable"

예시 응답:

{
  "conan_sources.tgz": "eadf19b33f4c3c7e113faabf26e76277",
  "conanfile.py": "25e55b96a28f81a14ba8e8a8c99eeace",
  "conanmanifest.txt": "5b6fd77a2ba14303ce4cdb08c87e82ab"
}

패키지 스냅샷

  • GitLab 12.5에서 소개되었습니다.

지정된 Conan 레시피와 Conan 참조로 패키지 파일의 스냅샷을 반환합니다. 스냅샷은 연결된 md5 해시를 가진 파일 이름 목록입니다.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference
속성 유형 필수 설명
package_name string yes 패키지 이름
package_version string yes 패키지 버전
package_username string yes 패키지의 Conan 사용자 이름. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string yes 패키지의 채널
conan_package_reference string yes Conan 패키지의 참조 해시. Conan이 이 값을 생성합니다.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f"

예시 응답:

{
  "conan_package.tgz": "749b29bdf72587081ca03ec033ee59dc",
  "conaninfo.txt": "32859d737fe84e6a7ccfa4d64dc0d1f2",
  "conanmanifest.txt": "a86b398e813bd9aa111485a9054a2301"
}

레시피 매니페스트

  • GitLab 12.5에서 소개되었습니다.

매니페스트는 다운로드 URL이 있는 레시피 파일 이름 목록입니다.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/digest
속성 유형 필수 설명
package_name string yes 패키지 이름
package_version string yes 패키지 버전
package_username string yes 패키지의 Conan 사용자 이름. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string yes 패키지의 채널
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/digest"

예시 응답:

{
  "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz",
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

응답에 있는 URL은 요청할 때 사용한 라우트 접두어와 동일합니다. 프로젝트 수준 경로로 요청하면 반환된 URL에 /projects/:id가 포함됩니다.

패키지 Manifest

  • GitLab 12.5에서 소개되었습니다.

Manifest는 연결된 다운로드 URL과 함께 패키지 파일 이름의 목록입니다.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/digest
속성 타입 필수 여부 설명
package_name string 패키지의 이름입니다.
package_version string 패키지의 버전입니다.
package_username string 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string 패키지의 채널입니다.
conan_package_reference string Conan 패키지의 참조 해시입니다. Conan이 이 값을 생성합니다.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/digest"

예시 응답:

{
  "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz",
  "conaninfo.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conanmanifest.txt"
}

응답의 URL들은 요청에 사용된 라우트 접두어와 동일합니다. 프로젝트 수준의 경로로 요청하면 반환된 URL에는 /projects/:id가 포함됩니다.

레시피 다운로드 URL

  • GitLab 12.5에서 소개되었습니다.

레시피 다운로드 URL은 연결된 다운로드 URL과 함께 레시피 파일 이름의 목록을 반환합니다. 이 속성은 recipe manifest 엔드포인트와 동일합니다.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/download_urls
속성 타입 필수 여부 설명
package_name string 패키지의 이름입니다.
package_version string 패키지의 버전입니다.
package_username string 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string 패키지의 채널입니다.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/digest"

예시 응답:

{
  "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz",
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

응답의 URL들은 요청에 사용된 라우트 접두어와 동일합니다. 프로젝트 수준의 경로로 요청하면 반환된 URL에는 /projects/:id가 포함됩니다.

패키지 다운로드 URL

  • GitLab 12.5에서 소개되었습니다.

패키지 다운로드 URL은 연결된 다운로드 URL과 함께 패키지 파일 이름의 목록을 반환합니다. 이 URL은 package manifest 엔드포인트와 동일한 페이로드입니다.

GET <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/download_urls
속성 타입 필수 여부 설명
package_name string 패키지의 이름입니다.
package_version string 패키지의 버전입니다.
package_username string 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string 패키지의 채널입니다.
conan_package_reference string Conan 패키지의 참조 해시입니다. Conan이 이 값을 생성합니다.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/download_urls"

예시 응답:

{
  "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz",
  "conaninfo.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conanmanifest.txt"
}

응답의 URL들은 요청에 사용된 라우트 접두어와 동일합니다. 프로젝트 수준의 경로로 요청하면 반환된 URL에는 /projects/:id가 포함됩니다.

레시피 업로드 URL

  • GitLab 12.5에서 소개됨.

레시피 파일 이름과 파일 크기 목록을 제공하면 각 파일을 업로드할 URL 목록이 반환됩니다.

POST <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/upload_urls
속성 유형 필수 설명
package_name string 패키지 이름입니다.
package_version string 패키지 버전입니다.
package_username string 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string 패키지의 채널입니다.

예시 요청 JSON 페이로드:

{
  "conanfile.py": 410,
  "conanmanifest.txt": 130
}
curl --request POST \
     --header "Authorization: Bearer <authenticate_token>" \
     --header "Content-Type: application/json" \
     --data '{"conanfile.py":410,"conanmanifest.txt":130}' \
     "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/upload_urls"

예시 응답:

{
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

응답의 URL에는 요청에 사용된 라우트 접두어가 포함됩니다. 프로젝트 수준의 라우트로 요청하면 반환된 URL에 /projects/:id가 포함됩니다.

패키지 업로드 URL

  • GitLab 12.5에서 소개됨.

패키지 파일 이름과 파일 크기 목록을 제공하면 각 파일을 업로드할 URL 목록이 반환됩니다.

POST <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/upload_urls
속성 유형 필수 설명
package_name string 패키지 이름입니다.
package_version string 패키지 버전입니다.
package_username string 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string 패키지의 채널입니다.
conan_package_reference string Conan 패키지의 참조 해시입니다. Conan이 이 값을 생성합니다.

예시 요청 JSON 페이로드:

{
  "conan_package.tgz": 5412,
  "conanmanifest.txt": 130,
  "conaninfo.txt": 210
  }
curl --request POST \
     --header "Authorization: Bearer <authenticate_token>" \
     --header "Content-Type: application/json" \
     --data '{"conan_package.tgz":5412,"conanmanifest.txt":130,"conaninfo.txt":210}'
     "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/upload_urls"

예시 응답:

{
  "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conanmanifest.txt",
  "conaninfo.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"
}

응답의 URL에는 요청에 사용된 라우트 접두어가 포함됩니다. 프로젝트 수준의 라우트로 요청하면 반환된 URL에 /projects/:id가 포함됩니다.

레시피 파일 다운로드

  • GitLab 12.6에서 도입되었습니다.

패키지 레지스트리에 레시피 파일을 다운로드합니다. 반드시 recipe download URLs endpoint이 반환한 다운로드 URL을 사용해야 합니다.

GET packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
속성 유형 필수 설명
package_name 문자열 패키지 이름입니다.
package_version 문자열 패키지 버전입니다.
package_username 문자열 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel 문자열 패키지의 채널입니다.
recipe_revision 문자열 레시피의 리비전입니다. GitLab은 아직 Conan 리비전을 지원하지 않으므로 기본값 0이 항상 사용됩니다.
file_name 문자열 요청된 파일의 이름과 확장자입니다.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py"

또한 다음을 사용하여 출력을 파일에 작성할 수 있습니다:

curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py" >> conanfile.py

이 예시는 현재 디렉토리에 conanfile.py로 작성합니다.

레시피 파일 업로드

  • GitLab 12.6에서 도입되었습니다.

패키지 레지스트리에 레시피 파일을 업로드합니다. 반드시 recipe upload URLs endpoint이 반환한 업로드 URL을 사용해야 합니다.

PUT packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
속성 유형 필수 설명
package_name 문자열 패키지 이름입니다.
package_version 문자열 패키지 버전입니다.
package_username 문자열 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel 문자열 패키지의 채널입니다.
recipe_revision 문자열 레시피의 리비전입니다. GitLab은 아직 Conan 리비전을 지원하지 않으므로 기본값 0이 항상 사용됩니다.
file_name 문자열 요청된 파일의 이름과 확장자입니다.

요청 본문에 파일 콘텐츠를 제공합니다:

curl --request PUT \
     --user <사용자명>:<개인 액세스 토큰> \
     --upload-file path/to/conanfile.py \
     "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py"

패키지 파일 다운로드

  • GitLab 12.6에서 도입되었습니다.

패키지 레지스트리에서 패키지 파일을 다운로드합니다. 반드시 package download URLs endpoint이 반환한 다운로드 URL을 사용해야 합니다.

GET packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
속성 유형 필수 설명
package_name 문자열 패키지 이름입니다.
package_version 문자열 패키지 버전입니다.
package_username 문자열 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel 문자열 패키지의 채널입니다.
recipe_revision 문자열 레시피의 리비전입니다. GitLab은 아직 Conan 리비전을 지원하지 않으므로 기본값 0이 항상 사용됩니다.
conan_package_reference 문자열 Conan 패키지의 참조 해시입니다. Conan이 이 값을 생성합니다.
package_revision 문자열 패키지의 리비전입니다. GitLab은 아직 Conan 리비전을 지원하지 않으므로 기본값 0이 항상 사용됩니다.
file_name 문자열 요청된 파일의 이름과 확장자입니다.
curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"

또한 다음을 사용하여 출력을 파일에 작성할 수 있습니다:

curl --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt" >> conaninfo.txt

이 예시는 현재 디렉토리에 conaninfo.txt로 작성합니다.

패키지 파일 업로드

  • GitLab 12.6에서 소개되었습니다.

패키지 레지스트리에 패키지 파일을 업로드합니다. 업로드 URL은 반드시 패키지 업로드 URL 엔드포인트에서 반환된 것을 사용해야 합니다.

PUT packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
속성 유형 필수 설명
package_name string 패키지의 이름입니다.
package_version string 패키지의 버전입니다.
package_username string 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string 패키지의 채널입니다.
recipe_revision string 레시피의 수정입니다. GitLab은 아직 Conan 수정을 지원하지 않으므로 기본값 0이 항상 사용됩니다.
conan_package_reference string Conan 패키지의 참조 해시입니다. Conan이 이 값을 생성합니다.
package_revision string 패키지의 수정입니다. GitLab은 아직 Conan 수정을 지원하지 않으므로 기본값 0이 항상 사용됩니다.
file_name string 요청된 파일의 이름과 확장자입니다.

요청 본문에 파일 콘텐츠를 제공하세요.

curl --request PUT \
     --user <username>:<personal_access_token> \
     --upload-file path/to/conaninfo.txt \
     "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"

패키지 삭제 (Conan 레시피 삭제)

  • GitLab 12.5에서 소개되었습니다.

레지스트리에서 Conan 레시피 및 패키지 파일을 삭제합니다.

DELETE <route-prefix>/conans/:package_name/:package_version/:package_username/:package_channel
속성 유형 필수 설명
package_name string 패키지의 이름입니다.
package_version string 패키지의 버전입니다.
package_username string 패키지의 Conan 사용자 이름입니다. 이 속성은 프로젝트의 +로 구분된 전체 경로입니다.
package_channel string 패키지의 채널입니다.
curl --request DELETE --header "Authorization: Bearer <authenticate_token>" "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable"

예시 응답:

{
  "id": 1,
  "project_id": 123,
  "created_at": "2020-08-19T13:17:28.655Z",
  "updated_at": "2020-08-19T13:17:28.655Z",
  "name": "my-package",
  "version": "1.0",
  "package_type": "conan",
  "creator_id": null,
  "status": "default"
}