InfoGrab DocsInfoGrab Docs

패키지 레지스트리의 Conan 2 패키지

요약

프로젝트의 패키지 레지스트리에 Conan 2 패키지를 게시합니다. GitLab의 Conan 2 패키지 레지스트리는 개발 중이며 기능이 제한적이므로 프로덕션 용도로 사용할 준비가 되지 않았습니다. 패키지 레지스트리에 Conan 2 패키지를 게시하려면 패키지 레지스트리를 원격으로 추가하고 인증합니다.

히스토리
  • GitLab 18.1에서 conan_package_revisions_support라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
  • GitLab 18.3에서 GitLab.com에 활성화되었습니다. 기능 플래그 conan_package_revisions_support가 제거되었습니다.

프로젝트의 패키지 레지스트리에 Conan 2 패키지를 게시합니다. 이후 의존성으로 사용해야 할 때 해당 패키지를 설치합니다.

Warning

GitLab의 Conan 2 패키지 레지스트리는 개발 중이며 기능이 제한적이므로 프로덕션 용도로 사용할 준비가 되지 않았습니다. 프로덕션 준비까지 남은 작업과 일정은 이 에픽에 정리되어 있습니다.

패키지 레지스트리에 Conan 2 패키지를 게시하려면 패키지 레지스트리를 원격으로 추가하고 인증합니다.

그러면 conan 명령을 실행해 패키지를 패키지 레지스트리에 게시할 수 있습니다.

Note

Conan 레지스트리는 FIPS를 준수하지 않으며 FIPS 모드가 활성화되면 비활성화됩니다.

Conan 2 패키지 관리자 클라이언트가 사용하는 API 엔드포인트 문서는 Conan v2 API를 참고합니다

Conan 2 패키지 빌드 방법을 확인합니다.

패키지 레지스트리를 Conan 원격으로 추가#

conan 명령을 실행하려면 프로젝트 또는 인스턴스에 패키지 레지스트리를 Conan 원격으로 추가해야 합니다. 그러면 패키지 레지스트리에 패키지를 게시하고 패키지 레지스트리에서 패키지를 설치할 수 있습니다.

프로젝트에 대한 원격 추가#

원격을 설정하면 모든 명령에서 원격 이름을 지정하지 않고도 프로젝트의 패키지를 다룰 수 있습니다.

프로젝트에 원격을 설정할 때 패키지 이름은 소문자여야 합니다. 또한 명령에는 사용자와 채널을 포함한 전체 레시피가 들어가야 합니다. 예를 들면 package_name/version@user/channel 입니다.

원격을 추가하려면 다음을 수행합니다:

  1. 터미널에서 다음 명령을 실행합니다:

    conan remote add gitlab https://gitlab.example.com/api/v4/projects/<project_id>/packages/conan
    
  2. Conan 2 명령 끝에 --remote=gitlab을 추가해 원격을 사용합니다.

    예를 들면 다음과 같습니다:

    conan search hello* --remote=gitlab
    

패키지 레지스트리 인증#

GitLab은 패키지를 업로드할 때, 그리고 비공개 및 내부 프로젝트에서 패키지를 설치할 때 인증을 요구합니다. 다만 공개 프로젝트의 패키지는 인증 없이 설치할 수 있습니다.

패키지 레지스트리에 인증하려면 다음 중 하나가 필요합니다:

Note

인증하지 않으면 비공개 및 내부 프로젝트의 패키지는 표시되지 않습니다. 인증하지 않은 상태에서 비공개 또는 내부 프로젝트의 패키지를 검색하거나 내려받으려 하면 Conan 2 클라이언트에서 unable to find the package in remote 오류가 발생합니다.

GitLab 원격에 자격 증명 추가#

토큰을 GitLab 원격에 연결하면 모든 Conan 2 명령에 토큰을 명시적으로 추가하지 않아도 됩니다.

사전 요구 사항:

터미널에서 다음 명령을 실행합니다. 이 예시에서 원격 이름은 gitlab 입니다. 실제 원격 이름을 사용합니다.

conan remote login -p <personal_access_token or deploy_token> gitlab <gitlab_username or deploy_token_username>

이제 --remote=gitlab과 함께 명령을 실행하면 요청에 사용자 이름과 비밀번호가 포함됩니다.

Note

GitLab 인증은 일정 주기로 만료되므로 개인 액세스 토큰을 다시 입력해야 할 때가 있습니다.

Conan 2 패키지 게시#

Conan 2 패키지를 패키지 레지스트리에 게시하면 프로젝트에 접근할 수 있는 사람이라면 누구나 그 패키지를 의존성으로 사용할 수 있습니다.

사전 요구 사항:

패키지를 게시하려면 conan upload 명령을 사용합니다:

conan upload hello/0.1@mycompany/beta -r gitlab

CI/CD를 사용해 Conan 2 패키지 게시#

GitLab CI/CD에서 Conan 2 명령을 사용할 때는 명령의 개인 액세스 토큰 대신 CI_JOB_TOKEN을 사용할 수 있습니다.

.gitlab-ci.yml 파일의 각 Conan 명령에 CONAN_LOGIN_USERNAME과 CONAN_PASSWORD를 지정할 수 있습니다. 예를 들면 다음과 같습니다:

create_package:
  image: <conan 2 image>
  stage: deploy
  script:
    - conan remote add gitlab ${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/conan
    - conan new <package-name>/0.1
    - conan create . --channel=stable --user=mycompany
    - CONAN_LOGIN_USERNAME=ci_user CONAN_PASSWORD=${CI_JOB_TOKEN} conan upload <package-name>/0.1@mycompany/stable --remote=gitlab
  environment: production

CI 파일의 기반으로 사용할 적절한 Conan 2 이미지는 공식 가이드에 따라 만듭니다.

동일한 레시피로 패키지 재게시#

기존 패키지와 동일한 레시피(package-name/version@user/channel)를 가진 패키지를 게시하면 이미 서버에 있으므로 Conan 이 업로드를 건너뜁니다.

Conan 2 패키지 설치#

패키지 레지스트리에서 Conan 2 패키지를 설치하면 의존성으로 사용할 수 있습니다. 패키지는 프로젝트 범위에서 설치할 수 있습니다. 동일한 레시피를 가진 패키지가 여러 개이면 패키지를 설치할 때 가장 최근에 게시된 패키지를 가져옵니다.

Conan 2 패키지는 보통 conanfile.txt 파일을 사용해 의존성으로 설치합니다.

사전 요구 사항:

  1. Conan 2 패키지 가이드에 따라 다른 패키지를 만듭니다. 프로젝트 루트에 conanfile.txt라는 파일을 만듭니다.

  2. 파일의 [requires] 섹션에 Conan 레시피를 추가합니다:

    [requires]
    hello/0.1@mycompany/beta
    
  3. 프로젝트 루트에 build 디렉터리를 만들고 해당 디렉터리로 이동합니다:

    mkdir build && cd build
    
  4. conanfile.txt에 나열된 의존성을 설치합니다:

    conan install ../conanfile.txt
    
Note

이 튜토리얼에서 만든 패키지를 설치하려고 하면 패키지가 이미 존재하므로 설치 명령이 아무 동작도 하지 않습니다. 다음 명령으로 로컬의 기존 패키지를 제거한 뒤 다시 시도합니다:

conan remove hello/0.1@mycompany/beta

Conan 2 패키지 제거#

GitLab 패키지 레지스트리에서 Conan 2 패키지를 제거하는 방법은 두 가지입니다.

  • 명령줄에서 Conan 2 클라이언트를 사용합니다:

    conan remove hello/0.1@mycompany/beta --remote=gitlab
    

    이 명령에는 원격을 명시적으로 포함해야 합니다. 그렇지 않으면 패키지가 로컬 시스템 캐시에서만 제거됩니다.

    [!note] 이 명령은 패키지 레지스트리에서 모든 레시피와 바이너리 패키지 파일을 제거합니다.

  • GitLab 사용자 인터페이스를 사용합니다:

    프로젝트의 Deploy > Package registry로 이동합니다. Remove repository ([remove])를 선택해 패키지를 제거합니다.

패키지 레지스트리에서 Conan 2 패키지 검색#

전체 또는 일부 패키지 이름으로, 또는 정확한 레시피로 검색하려면 conan search 명령을 실행합니다.

  • 특정 패키지 이름을 가진 모든 패키지를 검색합니다:

    conan search hello --remote=gitlab
    
  • he로 시작하는 모든 패키지처럼 이름의 일부로 검색합니다:

    conan search "he*" --remote=gitlab
    

검색 범위는 Conan 원격 구성에 따라 달라집니다. 접근 권한이 있는 한 대상 프로젝트의 모든 패키지가 검색에 포함됩니다.

검색 결과는 최대 500개 패키지로 제한되며, 가장 최근에 게시된 패키지 순으로 정렬됩니다.

Note

패키지를 검색할 때 Conan v2 CLI는 Conan v2로 업로드한 패키지의 상세 정보만 표시합니다. Conan v1으로 업로드한 패키지는 검색 결과에 나타나지만 상세 정보는 표시되지 않습니다. Conan v2는 패키지 참조에 recipe_hash 필드가 없다고 가정하는데, 이 필드는 Conan v1으로 업로드한 패키지에 존재하기 때문입니다.

Conan 2 패키지 다운로드#

conan download 명령을 사용하면 설정 없이 Conan 2 패키지의 레시피와 바이너리를 로컬 캐시로 내려받을 수 있습니다.

사전 요구 사항:

모든 바이너리 패키지 다운로드#

패키지 레지스트리에서 레시피에 연결된 모든 바이너리 패키지를 내려받을 수 있습니다.

모든 바이너리 패키지를 내려받으려면 다음 명령을 실행합니다:

conan download hello/0.1@mycompany/beta --remote=gitlab

레시피 파일 다운로드#

바이너리 패키지 없이 레시피 파일만 내려받을 수 있습니다.

레시피 파일을 내려받으려면 다음 명령을 실행합니다:

conan download hello/0.1@mycompany/beta --remote=gitlab --only-recipe

특정 바이너리 패키지 다운로드#

패키지 참조(Conan 2 문서에서는 package_id로 표기)를 지정해 단일 바이너리 패키지를 내려받을 수 있습니다.

특정 바이너리 패키지를 내려받으려면 다음 명령을 실행합니다:

conan download Hello/0.1@foo+bar/stable:<package_reference> --remote=gitlab

지원되는 CLI 명령#

GitLab Conan 리포지터리는 다음 Conan 2 CLI 명령을 지원합니다:

  • conan upload: 레시피와 패키지 파일을 패키지 레지스트리에 업로드합니다.
  • conan install: 패키지 레지스트리에서 Conan 2 패키지를 설치합니다. conanfile.txt 파일을 사용하는 방식도 포함합니다.
  • conan download: 설정 없이 패키지 레시피와 바이너리를 로컬 캐시로 내려받습니다.
  • conan search: 패키지 레지스트리에서 공개 패키지와 조회 권한이 있는 비공개 패키지를 검색합니다.
  • conan list : 기존 레시피, 리비전 또는 패키지를 나열합니다.
  • conan remove: 패키지 레지스트리에서 패키지를 삭제합니다.

Conan 리비전#

Conan 리비전은 패키지 레지스트리에서 패키지 불변성을 제공합니다. 버전을 바꾸지 않은 채 레시피나 패키지를 변경하면 Conan 이 그 변경을 추적하기 위해 고유 식별자(리비전)를 계산합니다.

리비전 유형#

Conan은 두 가지 유형의 리비전을 사용합니다:

  • 레시피 리비전(RREV): 레시피를 내보낼 때 생성됩니다. Conan은 기본적으로 레시피 매니페스트의 체크섬 해시로 레시피 리비전을 계산합니다.
  • 패키지 리비전(PREV): 패키지를 빌드할 때 생성됩니다. Conan은 패키지 콘텐츠의 해시로 패키지 리비전을 계산합니다.

리비전 참조#

패키지는 다음 형식으로 참조할 수 있습니다:

참조 설명
lib/1.0@conan/stable lib/1.0@conan/stable의 최신 RREV.
lib/1.0@conan/stable#RREV lib/1.0@conan/stable의 특정 RREV.
lib/1.0@conan/stable#RREV:PACKAGE_REFERENCE 특정 RREV에 속하는 바이너리 패키지.
lib/1.0@conan/stable#RREV:PACKAGE_REFERENCE#PREV 특정 RREV에 속하는 바이너리 패키지 리비전 PREV.

리비전 업로드#

모든 리비전과 그 바이너리를 GitLab 패키지 레지스트리에 업로드하려면 다음을 실행합니다:

conan upload "hello/0.1@mycompany/beta#*" --remote=gitlab

여러 리비전을 업로드하면 오래된 것부터 최신 순으로 업로드됩니다. 레지스트리에서도 이 상대 순서가 유지됩니다.

리비전 나열#

Conan 2에서 특정 레시피의 모든 리비전을 나열하려면 다음을 실행합니다:

conan list "hello/0.1@mycompany/beta#*" --remote=gitlab

이 명령은 지정한 레시피에서 사용할 수 있는 모든 리비전을 리비전 해시 및 생성 날짜와 함께 표시합니다.

특정 리비전의 상세 정보를 확인하려면 다음을 실행합니다:

conan list "hello/0.1@mycompany/beta#revision_hash:*#*" --remote=gitlab

이 명령은 해당 리비전에서 사용할 수 있는 바이너리 패키지와 패키지 리비전을 보여줍니다.

리비전으로 패키지 삭제#

패키지는 여러 단위로 삭제할 수 있습니다:

특정 레시피 리비전 삭제#

특정 레시피 리비전과 그에 연결된 모든 바이너리 패키지를 삭제하려면 다음을 실행합니다:

conan remove "hello/0.1@mycompany/beta#revision_hash" --remote=gitlab

특정 레시피 리비전의 패키지 삭제#

특정 레시피 리비전에 연결된 모든 패키지를 삭제하려면 다음을 실행합니다:

conan remove "hello/0.1@mycompany/beta#revision_hash:*" --remote=gitlab

리비전의 특정 패키지 삭제#

레시피 리비전에서 특정 패키지를 삭제하려면 다음을 사용합니다:

conan remove "package_name/version@user/channel#revision_hash:package_id" --remote=gitlab

불변 리비전 워크플로#

리비전은 불변으로 설계되었습니다. 레시피나 소스 코드를 수정하면 다음과 같이 동작합니다:

  • 레시피를 내보내면 새 레시피 리비전이 생성됩니다.
  • 이전 레시피 리비전에 속한 기존 바이너리는 포함되지 않습니다. 새 레시피 리비전용 바이너리를 새로 빌드해야 합니다.
  • 리비전을 지정하지 않으면 패키지를 설치할 때 Conan 2가 자동으로 최신 리비전을 가져옵니다.

패키지 바이너리는 레시피 리비전과 패키지 참조(Conan 2 문서에서는 package_id)마다 패키지 리비전을 하나만 두는 것이 좋습니다. 같은 레시피 리비전과 패키지 ID에 패키지 리비전이 여러 개 있다면 패키지가 불필요하게 다시 빌드되었다는 뜻입니다.

패키지 레지스트리의 Conan 2 패키지

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기

요약

프로젝트의 패키지 레지스트리에 Conan 2 패키지를 게시합니다. GitLab의 Conan 2 패키지 레지스트리는 개발 중이며 기능이 제한적이므로 프로덕션 용도로 사용할 준비가 되지 않았습니다. 패키지 레지스트리에 Conan 2 패키지를 게시하려면 패키지 레지스트리를 원격으로 추가하고 인증합니다.

히스토리
  • GitLab 18.1에서 conan_package_revisions_support라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
  • GitLab 18.3에서 GitLab.com에 활성화되었습니다. 기능 플래그 conan_package_revisions_support가 제거되었습니다.

프로젝트의 패키지 레지스트리에 Conan 2 패키지를 게시합니다. 이후 의존성으로 사용해야 할 때 해당 패키지를 설치합니다.

Warning

GitLab의 Conan 2 패키지 레지스트리는 개발 중이며 기능이 제한적이므로 프로덕션 용도로 사용할 준비가 되지 않았습니다. 프로덕션 준비까지 남은 작업과 일정은 이 에픽에 정리되어 있습니다.

패키지 레지스트리에 Conan 2 패키지를 게시하려면 패키지 레지스트리를 원격으로 추가하고 인증합니다.

그러면 conan 명령을 실행해 패키지를 패키지 레지스트리에 게시할 수 있습니다.

Note

Conan 레지스트리는 FIPS를 준수하지 않으며 FIPS 모드가 활성화되면 비활성화됩니다.

Conan 2 패키지 관리자 클라이언트가 사용하는 API 엔드포인트 문서는 Conan v2 API를 참고합니다

Conan 2 패키지 빌드 방법을 확인합니다.

패키지 레지스트리를 Conan 원격으로 추가#

conan 명령을 실행하려면 프로젝트 또는 인스턴스에 패키지 레지스트리를 Conan 원격으로 추가해야 합니다. 그러면 패키지 레지스트리에 패키지를 게시하고 패키지 레지스트리에서 패키지를 설치할 수 있습니다.

프로젝트에 대한 원격 추가#

원격을 설정하면 모든 명령에서 원격 이름을 지정하지 않고도 프로젝트의 패키지를 다룰 수 있습니다.

프로젝트에 원격을 설정할 때 패키지 이름은 소문자여야 합니다. 또한 명령에는 사용자와 채널을 포함한 전체 레시피가 들어가야 합니다. 예를 들면 package_name/version@user/channel 입니다.

원격을 추가하려면 다음을 수행합니다:

  1. 터미널에서 다음 명령을 실행합니다:

    conan remote add gitlab https://gitlab.example.com/api/v4/projects/<project_id>/packages/conan
    
  2. Conan 2 명령 끝에 --remote=gitlab을 추가해 원격을 사용합니다.

    예를 들면 다음과 같습니다:

    conan search hello* --remote=gitlab
    

패키지 레지스트리 인증#

GitLab은 패키지를 업로드할 때, 그리고 비공개 및 내부 프로젝트에서 패키지를 설치할 때 인증을 요구합니다. 다만 공개 프로젝트의 패키지는 인증 없이 설치할 수 있습니다.

패키지 레지스트리에 인증하려면 다음 중 하나가 필요합니다:

Note

인증하지 않으면 비공개 및 내부 프로젝트의 패키지는 표시되지 않습니다. 인증하지 않은 상태에서 비공개 또는 내부 프로젝트의 패키지를 검색하거나 내려받으려 하면 Conan 2 클라이언트에서 unable to find the package in remote 오류가 발생합니다.

GitLab 원격에 자격 증명 추가#

토큰을 GitLab 원격에 연결하면 모든 Conan 2 명령에 토큰을 명시적으로 추가하지 않아도 됩니다.

사전 요구 사항:

터미널에서 다음 명령을 실행합니다. 이 예시에서 원격 이름은 gitlab 입니다. 실제 원격 이름을 사용합니다.

conan remote login -p <personal_access_token or deploy_token> gitlab <gitlab_username or deploy_token_username>

이제 --remote=gitlab과 함께 명령을 실행하면 요청에 사용자 이름과 비밀번호가 포함됩니다.

Note

GitLab 인증은 일정 주기로 만료되므로 개인 액세스 토큰을 다시 입력해야 할 때가 있습니다.

Conan 2 패키지 게시#

Conan 2 패키지를 패키지 레지스트리에 게시하면 프로젝트에 접근할 수 있는 사람이라면 누구나 그 패키지를 의존성으로 사용할 수 있습니다.

사전 요구 사항:

패키지를 게시하려면 conan upload 명령을 사용합니다:

conan upload hello/0.1@mycompany/beta -r gitlab

CI/CD를 사용해 Conan 2 패키지 게시#

GitLab CI/CD에서 Conan 2 명령을 사용할 때는 명령의 개인 액세스 토큰 대신 CI_JOB_TOKEN을 사용할 수 있습니다.

.gitlab-ci.yml 파일의 각 Conan 명령에 CONAN_LOGIN_USERNAME과 CONAN_PASSWORD를 지정할 수 있습니다. 예를 들면 다음과 같습니다:

create_package:
  image: <conan 2 image>
  stage: deploy
  script:
    - conan remote add gitlab ${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/conan
    - conan new <package-name>/0.1
    - conan create . --channel=stable --user=mycompany
    - CONAN_LOGIN_USERNAME=ci_user CONAN_PASSWORD=${CI_JOB_TOKEN} conan upload <package-name>/0.1@mycompany/stable --remote=gitlab
  environment: production

CI 파일의 기반으로 사용할 적절한 Conan 2 이미지는 공식 가이드에 따라 만듭니다.

동일한 레시피로 패키지 재게시#

기존 패키지와 동일한 레시피(package-name/version@user/channel)를 가진 패키지를 게시하면 이미 서버에 있으므로 Conan 이 업로드를 건너뜁니다.

Conan 2 패키지 설치#

패키지 레지스트리에서 Conan 2 패키지를 설치하면 의존성으로 사용할 수 있습니다. 패키지는 프로젝트 범위에서 설치할 수 있습니다. 동일한 레시피를 가진 패키지가 여러 개이면 패키지를 설치할 때 가장 최근에 게시된 패키지를 가져옵니다.

Conan 2 패키지는 보통 conanfile.txt 파일을 사용해 의존성으로 설치합니다.

사전 요구 사항:

  1. Conan 2 패키지 가이드에 따라 다른 패키지를 만듭니다. 프로젝트 루트에 conanfile.txt라는 파일을 만듭니다.

  2. 파일의 [requires] 섹션에 Conan 레시피를 추가합니다:

    [requires]
    hello/0.1@mycompany/beta
    
  3. 프로젝트 루트에 build 디렉터리를 만들고 해당 디렉터리로 이동합니다:

    mkdir build && cd build
    
  4. conanfile.txt에 나열된 의존성을 설치합니다:

    conan install ../conanfile.txt
    
Note

이 튜토리얼에서 만든 패키지를 설치하려고 하면 패키지가 이미 존재하므로 설치 명령이 아무 동작도 하지 않습니다. 다음 명령으로 로컬의 기존 패키지를 제거한 뒤 다시 시도합니다:

conan remove hello/0.1@mycompany/beta

Conan 2 패키지 제거#

GitLab 패키지 레지스트리에서 Conan 2 패키지를 제거하는 방법은 두 가지입니다.

  • 명령줄에서 Conan 2 클라이언트를 사용합니다:

    conan remove hello/0.1@mycompany/beta --remote=gitlab
    

    이 명령에는 원격을 명시적으로 포함해야 합니다. 그렇지 않으면 패키지가 로컬 시스템 캐시에서만 제거됩니다.

    [!note] 이 명령은 패키지 레지스트리에서 모든 레시피와 바이너리 패키지 파일을 제거합니다.

  • GitLab 사용자 인터페이스를 사용합니다:

    프로젝트의 Deploy > Package registry로 이동합니다. Remove repository ([remove])를 선택해 패키지를 제거합니다.

패키지 레지스트리에서 Conan 2 패키지 검색#

전체 또는 일부 패키지 이름으로, 또는 정확한 레시피로 검색하려면 conan search 명령을 실행합니다.

  • 특정 패키지 이름을 가진 모든 패키지를 검색합니다:

    conan search hello --remote=gitlab
    
  • he로 시작하는 모든 패키지처럼 이름의 일부로 검색합니다:

    conan search "he*" --remote=gitlab
    

검색 범위는 Conan 원격 구성에 따라 달라집니다. 접근 권한이 있는 한 대상 프로젝트의 모든 패키지가 검색에 포함됩니다.

검색 결과는 최대 500개 패키지로 제한되며, 가장 최근에 게시된 패키지 순으로 정렬됩니다.

Note

패키지를 검색할 때 Conan v2 CLI는 Conan v2로 업로드한 패키지의 상세 정보만 표시합니다. Conan v1으로 업로드한 패키지는 검색 결과에 나타나지만 상세 정보는 표시되지 않습니다. Conan v2는 패키지 참조에 recipe_hash 필드가 없다고 가정하는데, 이 필드는 Conan v1으로 업로드한 패키지에 존재하기 때문입니다.

Conan 2 패키지 다운로드#

conan download 명령을 사용하면 설정 없이 Conan 2 패키지의 레시피와 바이너리를 로컬 캐시로 내려받을 수 있습니다.

사전 요구 사항:

모든 바이너리 패키지 다운로드#

패키지 레지스트리에서 레시피에 연결된 모든 바이너리 패키지를 내려받을 수 있습니다.

모든 바이너리 패키지를 내려받으려면 다음 명령을 실행합니다:

conan download hello/0.1@mycompany/beta --remote=gitlab

레시피 파일 다운로드#

바이너리 패키지 없이 레시피 파일만 내려받을 수 있습니다.

레시피 파일을 내려받으려면 다음 명령을 실행합니다:

conan download hello/0.1@mycompany/beta --remote=gitlab --only-recipe

특정 바이너리 패키지 다운로드#

패키지 참조(Conan 2 문서에서는 package_id로 표기)를 지정해 단일 바이너리 패키지를 내려받을 수 있습니다.

특정 바이너리 패키지를 내려받으려면 다음 명령을 실행합니다:

conan download Hello/0.1@foo+bar/stable:<package_reference> --remote=gitlab

지원되는 CLI 명령#

GitLab Conan 리포지터리는 다음 Conan 2 CLI 명령을 지원합니다:

  • conan upload: 레시피와 패키지 파일을 패키지 레지스트리에 업로드합니다.
  • conan install: 패키지 레지스트리에서 Conan 2 패키지를 설치합니다. conanfile.txt 파일을 사용하는 방식도 포함합니다.
  • conan download: 설정 없이 패키지 레시피와 바이너리를 로컬 캐시로 내려받습니다.
  • conan search: 패키지 레지스트리에서 공개 패키지와 조회 권한이 있는 비공개 패키지를 검색합니다.
  • conan list : 기존 레시피, 리비전 또는 패키지를 나열합니다.
  • conan remove: 패키지 레지스트리에서 패키지를 삭제합니다.

Conan 리비전#

Conan 리비전은 패키지 레지스트리에서 패키지 불변성을 제공합니다. 버전을 바꾸지 않은 채 레시피나 패키지를 변경하면 Conan 이 그 변경을 추적하기 위해 고유 식별자(리비전)를 계산합니다.

리비전 유형#

Conan은 두 가지 유형의 리비전을 사용합니다:

  • 레시피 리비전(RREV): 레시피를 내보낼 때 생성됩니다. Conan은 기본적으로 레시피 매니페스트의 체크섬 해시로 레시피 리비전을 계산합니다.
  • 패키지 리비전(PREV): 패키지를 빌드할 때 생성됩니다. Conan은 패키지 콘텐츠의 해시로 패키지 리비전을 계산합니다.

리비전 참조#

패키지는 다음 형식으로 참조할 수 있습니다:

참조 설명
lib/1.0@conan/stable lib/1.0@conan/stable의 최신 RREV.
lib/1.0@conan/stable#RREV lib/1.0@conan/stable의 특정 RREV.
lib/1.0@conan/stable#RREV:PACKAGE_REFERENCE 특정 RREV에 속하는 바이너리 패키지.
lib/1.0@conan/stable#RREV:PACKAGE_REFERENCE#PREV 특정 RREV에 속하는 바이너리 패키지 리비전 PREV.

리비전 업로드#

모든 리비전과 그 바이너리를 GitLab 패키지 레지스트리에 업로드하려면 다음을 실행합니다:

conan upload "hello/0.1@mycompany/beta#*" --remote=gitlab

여러 리비전을 업로드하면 오래된 것부터 최신 순으로 업로드됩니다. 레지스트리에서도 이 상대 순서가 유지됩니다.

리비전 나열#

Conan 2에서 특정 레시피의 모든 리비전을 나열하려면 다음을 실행합니다:

conan list "hello/0.1@mycompany/beta#*" --remote=gitlab

이 명령은 지정한 레시피에서 사용할 수 있는 모든 리비전을 리비전 해시 및 생성 날짜와 함께 표시합니다.

특정 리비전의 상세 정보를 확인하려면 다음을 실행합니다:

conan list "hello/0.1@mycompany/beta#revision_hash:*#*" --remote=gitlab

이 명령은 해당 리비전에서 사용할 수 있는 바이너리 패키지와 패키지 리비전을 보여줍니다.

리비전으로 패키지 삭제#

패키지는 여러 단위로 삭제할 수 있습니다:

특정 레시피 리비전 삭제#

특정 레시피 리비전과 그에 연결된 모든 바이너리 패키지를 삭제하려면 다음을 실행합니다:

conan remove "hello/0.1@mycompany/beta#revision_hash" --remote=gitlab

특정 레시피 리비전의 패키지 삭제#

특정 레시피 리비전에 연결된 모든 패키지를 삭제하려면 다음을 실행합니다:

conan remove "hello/0.1@mycompany/beta#revision_hash:*" --remote=gitlab

리비전의 특정 패키지 삭제#

레시피 리비전에서 특정 패키지를 삭제하려면 다음을 사용합니다:

conan remove "package_name/version@user/channel#revision_hash:package_id" --remote=gitlab

불변 리비전 워크플로#

리비전은 불변으로 설계되었습니다. 레시피나 소스 코드를 수정하면 다음과 같이 동작합니다:

  • 레시피를 내보내면 새 레시피 리비전이 생성됩니다.
  • 이전 레시피 리비전에 속한 기존 바이너리는 포함되지 않습니다. 새 레시피 리비전용 바이너리를 새로 빌드해야 합니다.
  • 리비전을 지정하지 않으면 패키지를 설치할 때 Conan 2가 자동으로 최신 리비전을 가져옵니다.

패키지 바이너리는 레시피 리비전과 패키지 참조(Conan 2 문서에서는 package_id)마다 패키지 리비전을 하나만 두는 것이 좋습니다. 같은 레시피 리비전과 패키지 ID에 패키지 리비전이 여러 개 있다면 패키지가 불필요하게 다시 빌드되었다는 뜻입니다.