- Conan 원격지로 패키지 레지스트리 추가
- 패키지 레지스트리에 대한 인증
- Conan 패키지 게시
- CI/CD를 통한 Conan 패키지 게시
- Conan 패키지 설치
- Conan 패키지 제거
- 패키지 레지스트리에서 Conan 패키지 검색
- 패키지 레지스트리에서 Conan 패키지 정보 가져오기
- 지원되는 CLI 명령
- 문제 해결
Conan 패키지 레지스트리
프로젝트의 패키지 레지스트리에 Conan 패키지를 게시한 다음, 이를 의존성으로 사용할 때마다 패키지를 설치하세요.
Conan 패키지를 패키지 레지스트리에 게시하려면 먼저 해당 패키지 레지스트리를 원격지로 추가하고 인증하세요.
그런 다음 conan
명령을 실행하고 패키지를 패키지 레지스트리에 게시할 수 있습니다.
Conan 패키지 관리자 클라이언트가 사용하는 특정 API 엔드포인트에 대한 문서는 Conan API 문서를 참조하세요.
Conan 패키지를 빌드하는 방법을 알아보세요.
Conan 원격지로 패키지 레지스트리 추가
conan
명령을 실행하려면 프로젝트나 인스턴스에 Conan 패키지 레지스트리를 원격지로 추가해야 합니다. 그런 다음 패키지 레지스트리에 패키지를 게시하고 설치할 수 있습니다.
프로젝트 원격지 추가
프로젝트의 패키지에 원격지를 설정하면 모든 명령에 원격지 이름을 지정할 필요가 없이 프로젝트의 패키지를 사용할 수 있습니다.
프로젝트에 원격지를 설정하면 패키지 이름에는 제한이 없지만 명령에 사용자와 채널을 포함하여 전체 레시피를 지정해야 합니다. 예를 들어, package_name/version@user/channel
와 같이니다.
원격지를 추가하려면:
-
터미널에서 다음 명령을 실행합니다.
conan remote add gitlab https://gitlab.example.com/api/v4/projects/<project_id>/packages/conan
-
Conan 명령 끝에
--remote=gitlab
를 추가하여 해당 원격지를 사용하세요.예:
conan search Hello* --remote=gitlab
인스턴스 원격지 추가
GitLab 인스턴스 전체에 걸쳐 패키지를 액세스하려면 단일 원격지를 사용하세요.
하지만 이 원격지를 사용할 때는 패키지 네이밍 제한을 따라야 합니다.
원격지를 추가하려면:
-
터미널에서 다음 몤령을 실행합니다.
conan remote add gitlab https://gitlab.example.com/api/v4/packages/conan
-
Conan 명령 끝에
--remote=gitlab
를 추가하여 해당 원격지를 사용하세요.예:
conan search 'Hello*' --remote=gitlab
인스턴스 원격지에 대한 패키지 레시피 네이밍 규칙
표준 Conan 레시피 규칙은 package_name/version@user/channel
이지만 인스턴스 원격지를 사용하는 경우 user
레시피는 플러스 기호(+
)로 구분된 프로젝트 경로여야 합니다.
예시 레시피 이름:
프로젝트 | 패키지 | 지원 여부 |
---|---|---|
foo/bar
| my-package/1.0.0@foo+bar/stable
| 예 |
foo/bar-baz/buz
| my-package/1.0.0@foo+bar-baz+buz/stable
| 예 |
gitlab-org/gitlab-ce
| my-package/1.0.0@gitlab-org+gitlab-ce/stable
| 예 |
gitlab-org/gitlab-ce
| my-package/1.0.0@foo/stable
| 아니요 |
프로젝트 원격지는 더 유연한 네이밍 규칙을 가지고 있습니다.
패키지 레지스트리에 대한 인증
GitLab는 패키지를 업로드하고 개인 및 내부 프로젝트에서 패키지를 설치하기 위해 인증이 필요합니다. (그러나 공개 프로젝트에서는 인증 없이 패키지를 설치할 수 있습니다.)
패키지 레지스트리에 인증하려면 다음 중 하나가 필요합니다:
-
api
로 설정된 개인 액세스 토큰 -
read_package_registry
,write_package_registry
, 또는 둘 다로 설정된 배포 토큰 -
CI/CD를 통한 Conan 패키지 게시 시
CI_JOB_TOKEN
unable to find the package in remote
오류가 발생합니다.GitLab 원격지에 자격 증명 추가
GitLab 원격지와 토큰을 연결하여 모든 Conan 명령에 토큰을 명시적으로 추가할 필요가 없도록 설정하세요.
사전 요구 사항:
- 인증 토큰이 있어야 합니다.
- Conan 원격지가 구성되어 있어야 합니다.
터미널에서 다음 명령을 실행합니다. 이 예제에서 원격지 이름은 gitlab
입니다. 자신의 원격지 이름을 사용하세요.
conan user <gitlab_username 또는 deploy_token_username> -r gitlab -p <personal_access_token 또는 deploy_token>
이제 --remote=gitlab
로 명령을 실행하면 사용자 이름과 비밀번호가 요청에 포함됩니다.
프로젝트에 대한 기본 원격지 설정(선택 사항)
특정 원격지를 지정하지 않고 GitLab 패키지 레지스트리와 상호 작용하려면 Conan에게 항상 해당 패키지 레지스트리를 사용하도록 지시할 수 있습니다.
터미널에서 다음 명령을 실행하세요.
conan remote add_ref Hello/0.1@mycompany/beta gitlab
Hello/0.1@user/channel
의 기본 원격지가 Hello/0.2@user/channel
에 대해 작동하지 않습니다.기본 사용자 또는 원격지를 설정하지 않은 경우 명령에 사용자와 원격지를 포함할 수 있습니다.
CONAN_LOGIN_USERNAME=<gitlab_username 또는 deploy_token_username> CONAN_PASSWORD=<personal_access_token 또는 deploy_token> <conan 명령> --remote=gitlab
Conan 패키지 게시
프로젝트에서 Conan 패키지를 패키지 레지스트리에 게시하여 프로젝트에 액세스할 수 있는 누구나 해당 패키지를 의존성으로 사용할 수 있도록 합니다.
사전 요구 사항:
- 패키지 레지스트리를 추가해야 합니다.
- 패키지 레지스트리에 대한 인증이 구성되어 있어야 합니다.
-
로컬에서 Conan 패키지가 있어야 합니다.
- 인스턴스 원격지의 경우 네이밍 규칙을 충족해야 합니다.
- 프로젝트 개요 페이지에 표시되는 프로젝트 ID가 있어야 합니다.
패키지를 게시하려면 conan upload
명령을 사용하세요.
conan upload Hello/0.1@mycompany/beta --all
CI/CD를 통한 Conan 패키지 게시
GitLab CI/CD에서 Conan 명령을 사용하려면 명령에서 개인 액세스 토큰 대신 CI_JOB_TOKEN
을 사용할 수 있습니다.
.gitlab-ci.yml
파일에서 각 Conan 명령에 CONAN_LOGIN_USERNAME
및 CONAN_PASSWORD
를 제공하세요. 예제는 다음과 같습니다.
image: conanio/gcc7
create_package:
stage: deploy
script:
- conan remote add gitlab ${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/conan
- conan new <package-name>/0.1 -t
- conan create . <group-name>+<project-name>/stable
- CONAN_LOGIN_USERNAME=ci_user CONAN_PASSWORD=${CI_JOB_TOKEN} conan upload <package-name>/0.1@<group-name>+<project-name>/stable --all --remote=gitlab
environment: production
CI 파일의 기초로 사용할 수 있는 추가적인 Conan 이미지는 Conan 문서에서 찾을 수 있습니다.
동일한 레시피로 패키지를 다시 배포하는 경우
package-name/version@user/channel
와 같은 레시피를 가진 패키지를 배포할 때 기존 패키지와 똑같은 파일은 성공적으로 업로드되어 UI를 통해 접근할 수 있습니다. 그러나 패키지를 설치할 때는 가장 최근에 배포된 패키지만 반환됩니다.
Conan 패키지 설치
패키지 레지스트리에서 Conan 패키지를 설치하여 의존성으로 사용할 수 있습니다. 인스턴스 또는 프로젝트 범위에서 패키지를 설치할 수 있습니다. 레시피가 동일한 패키지가 여러 개 있는 경우에는 가장 최근에 배포된 패키지가 검색됩니다.
Conan 패키지는 종종 conanfile.txt
파일을 사용하여 의존성으로 설치됩니다.
준비사항:
- Conan 리모트는 Conan 리모트로 구성되어 있어야 합니다.
- 비공개 및 내부 프로젝트의 경우, 패키지 레지스트리에 대한 인증을 구성해야 합니다.
-
패키지를 의존성으로 설치하려는 프로젝트에서
conanfile.txt
를 엽니다. 또는 프로젝트의 루트에conanfile.txt
라는 파일을 만듭니다. -
파일의
[requires]
섹션에 Conan 레시피를 추가합니다:[requires] Hello/0.1@mycompany/beta [generators] cmake
-
프로젝트의 루트에서
build
디렉터리를 만들고 해당 디렉터리로 이동합니다:mkdir build && cd build
-
conanfile.txt
에 나열된 의존성을 설치합니다:conan install .. <options>
~/.conan/data
를 삭제합니다.Conan 패키지 제거
GitLab 패키지 레지스트리에서 Conan 패키지를 제거하는 두 가지 방법이 있습니다.
-
Conan 클라이언트를 사용하여 명령줄에서 제거하는 방법:
conan remove Hello/0.2@user/channel --remote=gitlab
이 명령에서는 반드시 원격지를 명시적으로 포함해야 합니다. 그렇지 않으면 패키지가 로컬 시스템 캐시에서만 제거됩니다.
이 명령은 패키지 레지스트리에서 모든 레시피 및 이진 패키지 파일을 제거합니다. -
GitLab 사용자 인터페이스에서:
프로젝트의 배포 > 패키지 레지스트리로 이동합니다. 패키지를 선택하여 리포지터리 제거()를 선택합니다.
패키지 레지스트리에서 Conan 패키지 검색
특정 패키지 이름 또는 레시피를 통해 전체 또는 부분적인 패키지 검색을 위해 conan search
명령을 실행합니다.
-
특정 패키지 이름에 대한 모든 패키지 검색:
conan search Hello --remote=gitlab
-
특정 이름으로 시작하는 모든 패키지(예:
He
로 시작하는 모든 패키지) 검색:conan search He* --remote=gitlab
검색의 범위는 Conan 리모트 구성에 따라 달라집니다:
-
인스턴스에 대한 리모트 추가가 구성되어 있는 경우, 검색 결과에는 액세스 권한이 있는 모든 프로젝트가 포함됩니다. 이는 비공개 프로젝트와 모든 공개 프로젝트를 포함합니다.
-
프로젝트에 대한 리모트 추가가 구성되어 있는 경우, 검색 결과에는 해당 프로젝트의 패키지가 모두 포함됩니다(액세스 권한이 있을 경우).
패키지 레지스트리에서 Conan 패키지 정보 가져오기
conan info
명령은 패키지에 대한 정보를 반환합니다:
conan info Hello/0.1@mycompany/beta
지원되는 CLI 명령
GitLab Conan 리포지터리는 다음과 같은 Conan CLI 명령을 지원합니다:
-
conan upload
: 레시피 및 패키지 파일을 패키지 레지스트리에 업로드합니다. -
conan install
: 패키지 레지스트리에서 Conan 패키지를 설치합니다. 이는conanfile.txt
파일을 사용하여 이루어집니다. -
conan search
: 패키지 레지스트리에서 공개 패키지 및 볼 수 있는 비공개 패키지를 검색합니다. -
conan info
: 패키지 레지스트리에서 지정된 패키지에 대한 정보를 볼 수 있습니다. -
conan remove
: 패키지를 패키지 레지스트리에서 삭제합니다.
문제 해결
자세한 출력 만들기
Conan 문제 해결 시 더 자세한 출력을 위해:
export CONAN_TRACE_FILE=/tmp/conan_trace.log # 또는 윈도우에서는 SET
conan <command>
Conan 문서에서 추가 로깅 팁을 찾을 수 있습니다.
SSL 오류
자체 서명된 인증서를 사용 중인 경우 Conan에서 SSL 오류를 관리하는 두 가지 방법이 있습니다:
-
conan remote
명령을 사용하여 SSL 확인을 비활성화합니다. - 서버
crt
파일을cacert.pem
파일에 추가합니다.
이에 대해 자세히 알아보려면 Conan 문서를 참조하십시오.