771 字约 3 分钟
Conan 制品库用于存储和分发 C/C++ 软件包,支持上传、管理和安装各类 C/C++ 第三方库与工具。
前置准备
本地开发
添加远程仓库并登录
<REMOTE_NAME> 为远程仓库名称,<REPO_URL> 为远程仓库地址。
conan remote add <REMOTE_NAME> <REPO_URL>
conan remote login -p <YOUR_TOKEN> <REMOTE_NAME> cnb拉取制品
conan download <PACKAGE_NAME> -r <REMOTE_NAME>推送制品
conan create . --user=<USER> --channel=<CHANNEL>
conan upload <PACKAGE_NAME> -r <REMOTE_NAME>云原生构建
云原生构建使用令牌有两种方式,参考云原生构建、云原生开发中使用令牌。
配置凭据、拉取与推送
以下示例使用 CNB_TOKEN(推荐方式)将凭据配置、拉取和推送合并到一个流水线中。 如需使用密钥仓库文件, 参考云原生构建中使用令牌。
推送制品
.cnb.yml
main:
push:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
stages:
- name: 配置 conan 仓库凭据
script:
- conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
- conan remote login -p ${CNB_TOKEN} cnb-conan-repo ${CNB_TOKEN_USER_NAME}
- name: 构建 conan 制品
script: conan create . --user=test-user --channel=test-channel
- name: 推送 conan 制品
script: conan upload my-project/1.0.0@test-user/test-channel -r cnb-conan-repo拉取制品
.cnb.yml
main:
push:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
stages:
- name: 配置 conan 仓库凭据
script:
- conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
- conan remote login -p ${CNB_TOKEN} cnb-conan-repo ${CNB_TOKEN_USER_NAME}
- name: 拉取 conan 制品
script: conan download zlib/1.3.1 -r cnb-conan-repo也支持拉取与推送合并到同一流水线中。
云原生开发
前置准备
请在 .cnb.yml 文件中添加以下配置:
.cnb.yml
$:
vscode:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
services:
- vscode
- docker
imports:
- <SECRET_REPO_URL>添加远程仓库并登录
使用内置 CNB_TOKEN(推荐):
conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
conan remote login -p ${CNB_TOKEN} cnb-conan-repo ${CNB_TOKEN_USER_NAME}拉取制品
conan download <PACKAGE_NAME> -r <REMOTE_NAME>编译及推送制品
conan create . --user=<USER> --channel=<CHANNEL>
conan upload <PACKAGE_NAME> -r <REMOTE_NAME>FAQ
Q: 为什么使用 Conan 1.X 无法推送制品到 CNB Conan 制品库?
A: 不支持 Conan 1.X 的旧版协议。如需使用 Conan 1.X 推送, 请先执行 export CONAN_REVISIONS_ENABLED=True 启用修订开关,再尝试推送。
Q: 为什么上传时返回 409 错误?
A: 当前仅支持保留单个 recipe 修订版本和单个 package 修订版本。推送其他修订版本将被视为覆盖操作, 请将制品仓库的版本覆盖策略设置为「允许覆盖已有版本」,或修改包版本后重试。
Q: 为什么上传时返回 400 错误?
A: 通常是制品名称不符合 Conan 2 规范,请检查后重试。
更多信息
更多 Conan 用法请参阅官方文档。