conan remote만 바꿔도 패키지 인덱스·리비전 해석이 달라질 수 있습니다. 본문은 미러 엔드포인트 비교·core.download:parallel·CONAN_HOME·ccache·conan.lock 검증을 표와 복붙 CLI로 묶었습니다. 내부 링크(로그인 불필요): MacPull 홈, 기술 블로그 목록, 관련 풀 안정성·OCI 맥락은 컨테이너 레지스트리 풀 매트릭스와 정책을 맞추면 좋습니다.
시나리오 전제(적용 범위)
대상은 Conan 2.x·CMake·리비전이 켜진 레시피입니다. CI는 conan.lock 또는 동등한 락 입력만 허용하고, 프로필(os·arch·컴파일러)을 PR 단위로 고정합니다. 로컬 디버그와 원격 Mac의 CONAN_HOME 경로는 다를 수 있으나 remote 우선순위 문자열은 동일해야 합니다.
미러 엔드포인트 비교표·lockfile 의사결정
| 유형 | 엔드포인트(예) | lockfile·운영 | 리스크 |
|---|---|---|---|
| Conan Center | https://center.conan.io | PR마다 conan.lock | 레이트·지연 |
| Artifactory·Nexus | …/api/conan/저장소 + --index=0 | 동일 lock·서명 아티팩트 | 토큰·TLS |
| 사내 프록시 | https://conan-mirror.intra/ | 브랜치별 lock 분리 | CA·리비전 불일치 |
export CONAN_HOME="${CI_WORKSPACE:-$PWD}/.conan2"
mkdir -p "$CONAN_HOME"
conan remote list
# 사내 미러를 최우선으로(URL·이름은 환경에 맞게 교체)
conan remote add company https://company.jfrog.io/artifactory/api/conan/conan-local --index=0
conan remote disable conancenter # 필요 시만: 공개 원격 끄기
# 사내 저장소일 때만 로그인(읽기 전용 토큰 권장)
# conan remote login company "$CONAN_USER" -p "$CONAN_PASSWORD"
병행 다운로드(core.download:parallel)·타임아웃 임계값
공유 원격 Mac에서는 동시 잡 수 × parallel이 출구 대역을 금방 소모합니다. core.download:parallel은 4에서 시작해 429·5xx가 없을 때만 8까지 올립니다. 팀 표준은 ${CONAN_HOME}/global.conf와 -cc 스위치로 문서화하세요.
export CONAN_HOME="${CI_WORKSPACE:-$PWD}/.conan2"
mkdir -p "$CONAN_HOME"
# global.conf 지속 설정(또는: conan install . -cc core.download:parallel=8)
grep -q '^core.download:parallel=' "$CONAN_HOME/global.conf" 2>/dev/null || \
printf '%s\n' 'core.download:parallel=8' >> "$CONAN_HOME/global.conf"
conan config home
export CONAN_CPU_COUNT="${CONAN_CPU_COUNT:-$(sysctl -n hw.ncpu 2>/dev/null || echo 4)}"
원격 Mac CI 캐시 디렉터리·디스크 워터마크
CONAN_HOME 아래 p·b 캐시와 컴파일러 캐시를 잡 워크스페이스에 둬서 동시 빌드 간 충돌을 줄입니다. 공용 노드면 디스크 사용률 82 / 87 / 92%에서 경고·유예·스윕 정책을 미리 정합니다. 원문 도구 체인 캐시는 vcpkg·CMake FetchContent 매트릭스와 캐시 경로를 맞추면 추적이 쉽습니다.
export CONAN_HOME="${CI_WORKSPACE:-$PWD}/.conan2"
export CCACHE_DIR="${CI_WORKSPACE:-$PWD}/.ccache"
export CC="ccache clang"
export CXX="ccache clang++"
mkdir -p "$CONAN_HOME" "$CCACHE_DIR"
df -h "$CI_WORKSPACE" || df -h .
ccache -s
실패 재시도·lockfile 일관성 검사
네트워크 실패는 2·4·8·16초 백오프로 감싼 뒤, 동일 스텝을 여러 잡이 동시에 재시도하지 않도록 파이프라인 상한을 둡니다. 락파일은 생성·커밋·CI 소비·graph info로 리비전을 한 번 더 확인하는 네 단계로 끊습니다.
# lock 생성·설치·그래프 검증(프로젝트 폴더에서) conan lock create . --lockfile-out=conan.lock conan install . --lockfile=conan.lock --build=missing conan graph info . --lockfile=conan.lock # 재시도 래핑 예(zsh/bash) for i in 1 2 3 4 5; do conan install . --lockfile=conan.lock --build=missing && break sleep $((2 ** i)) done
FAQ(본문과 JSON-LD 동일 요지)
Q. Conan Center와 사내 미러를 번갈아 쓰면 해석이 달라지나요?
A. 인덱스·리비전이 다르면 달라질 수 있습니다. remote 목록을 한 줄로 고정하고 conan.lock만 소비하세요.
Q. parallel을 올렸더니 HTTP 429가 납니다.
A. parallel과 동시 CI 잡 수의 곱을 낮추고, 토큰·대역 정책을 조정하세요.
Q. 디스크가 자주 찹니다.
A. CONAN_HOME·CCACHE_DIR 스윕 주기와 92% 이상 시 유예 룰을 문서화하세요.
요약
Conan 2는 remote 한 줄·병행 다운로드·캐시 경로·lockfile이 동시에 맞아야 재현됩니다. Apple Silicon 빌드 풀·디스크 여유가 필요하면 MacPull 원격 Mac에서 노드 사양을 맞춰 보세요.
아래는 로그인 없이 열립니다: 홈·요금제·구매·고객 지원(도움말)·기술 블로그·CI 캐시·동시성 실무는 빌드 풀·동시 풀·디스크 FAQ를 참고하세요.