- 패키지 레지스트리를 Conan 원격으로 추가하기
- 패키지 레지스트리에 인증하기
- Conan 패키지 게시하기
- CI/CD를 사용하여 Conan 패키지 게시하기
- Conan 패키지 설치하기
- Conan 패키지 제거하기
- 패키지 레지스트리에서 Conan 패키지 검색
- 패키지 레지스트리에서 Conan 패키지 정보 가져오기
- 지원되는 CLI 명령어
- 문제 해결
Conan 패키지가 패키지 레지스트리에 있습니다
Status: Experiment
이 에픽에서는 프로덕션 준비를 위한 나머지 작업 및 일정에 대해 자세히 설명합니다.
프로젝트의 패키지 레지스트리에 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은 패키지를 업로드하고 개인 및 내부 프로젝트에서 패키지를 설치하기 위해 인증이 필요합니다. (그러나 공개 프로젝트에서 패키지를 인증 없이 설치할 수 있습니다.)
패키지 레지스트리에 인증하려면 다음 중 하나가 필요합니다:
unable to find the package in remote
오류가 발생합니다.GitLab 원격에 자격 증명 추가하기
각 Conan 명령에 토큰을 명시적으로 추가할 필요가 없도록 GitLab 원격과 토큰을 연관시킵니다.
필수 조건:
- 인증 토큰이 있어야 합니다.
- Conan 원격이 구성되어 있어야 합니다.
터미널에서 다음 명령을 실행합니다. 이 예제에서 원격 이름은 gitlab
입니다. 당신의 원격 이름을 사용하세요.
conan user <gitlab_username or deploy_token_username> -r gitlab -p <personal_access_token or 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 or deploy_token_username> CONAN_PASSWORD=<personal_access_token or deploy_token> <conan command> --remote=gitlab
Conan 패키지 게시하기
Conan 패키지를 패키지 레지스트리에 게시하여 프로젝트에 접근할 수 있는 모든 사용자가 패키지를 의존성으로 사용할 수 있도록 합니다.
필수 조건:
- Conan 원격이 구성되어 있어야 합니다.
- 패키지 레지스트리에 인증이 설정되어 있어야 합니다.
- 로컬 Conan 패키지가 존재해야 합니다.
- 인스턴스 원격의 경우, 패키지는 이름 규칙을 충족해야 합니다.
- 프로젝트 ID가 필요하며, 이는 프로젝트 개요 페이지에서 확인할 수 있습니다.
패키지를 게시하려면 conan upload
명령을 사용하세요:
conan upload Hello/0.1@mycompany/beta --all
CI/CD를 사용하여 Conan 패키지 게시하기
GitLab CI/CD에서 Conan 명령어를 사용하려면, 명령어에서 개인 액세스 토큰 대신 CI_JOB_TOKEN
을 사용할 수 있습니다.
각 Conan 명령어에 대해 .gitlab-ci.yml
파일에서 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
파일을 사용하여 의존성으로 설치됩니다.
필수 조건:
-
패키지를 의존성으로 설치할 프로젝트에서
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 # Windows에서는 SET 합니다
conan <command>
더 많은 로깅 팁은 Conan 문서에서 확인할 수 있습니다.
SSL 오류
자체 서명된 인증서를 사용하는 경우, Conan의 SSL 오류를 관리하는 두 가지 방법이 있습니다:
-
conan remote
명령어를 사용하여 SSL 검증을 비활성화합니다. - 서버의
crt
파일을cacert.pem
파일에 추가합니다.
자세한 내용은 Conan 문서를 참조하세요.