1337 字约 4 分钟
Conan 制品库是用于存储和分发 C/C++ 软件包的仓库,开发者可以通过它上传、管理和安装各种 C/C++ 第三方库和工具
前置准备
本地开发
添加远程仓库并登录
# REMOTE_NAME 您的远程仓库名称
# REPO_URL 您的远程仓库地址
# 示例: conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
conan remote add <REMOTE_NAME> <REPO_URL>
# 示例 remote login -p my-token cnb-conan-repo cnb
conan remote login -p <TOKEN> <REMOTE_NAME> cnb拉取制品
# 示例: conan download zlib/1.3.1 -r cnb-conan-repo
conan download <PACKAGE_NAME> -r <REMOTE_NAME>推送制品
# 示例1: conan create .
# 示例2: conan create . --user=test-user --channel=test-channel
conan create . --user=<USER> --channel=<CHANNEL>
# 示例1: conan upload my-project/1.0.0 -r cnb-conan-repo (没有 user 与 channel)
# 示例2: conan upload my-project/1.0.0@test-user/test-channel -r cnb-conan-repo (存在 user 与 channel)
conan upload <PACKAGE_NAME> -r <REMOTE_NAME>云原生构建
拉取制品
- 方案1: 使用内置的 CNB_TOKEN 环境变量:
master:
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 add <REMOTE_NAME> <REPO_URL>
# 示例 remote login -p ${CNB_TOKEN} cnb-conan-repo cnb
- conan remote login -p ${CNB_TOKEN} <REMOTE_NAME> cnb
- name: 拉取 conan 制品
script:
# 示例 conan download zlib/1.3.1 -r cnb-conan-repo
- conan download <PACKAGE_NAME> -r <REMOTE_NAME>- 方案2: 使用密钥仓库文件:
master:
push:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
import:
# 引入密钥仓库配置文件
- <SECRET_REPO_URL>
stages:
- name: 配置 conan 仓库凭据
script:
- conan remote add <REMOTE_NAME> <REPO_URL>
- conan remote login -p <PASS_WORD> <REMOTE_NAME> <USER_NAME>
- name: 拉取 conan 制品
script:
- conan download <PACKAGE_NAME> -r <REMOTE_NAME>示例:
master:
push:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
import:
- https://cnb.cool/cnb-demo/env-demo/-/blob/main/envs/env.yml
stages:
- name: 配置 conan 仓库凭据
script:
- conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
# 引入密钥仓库配置文件,以环境变量的形式注入 USER_NAME 和 PASS_WORD 的值
- conan remote login -p ${PASS_WORD} cnb-conan-repo ${USER_NAME}
- name: 拉取 conan 制品
script:
- conan download zlib/1.3.1 -r cnb-conan-repo推送制品
- 方案1: 使用内置的 CNB_TOKEN 环境变量:
master:
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 add <REMOTE_NAME> <REPO_URL>
# 示例 remote login -p ${CNB_TOKEN} cnb-conan-repo cnb
- conan remote login -p ${CNB_TOKEN} <REMOTE_NAME> cnb
- name: 构建 conan 制品
script:
# 示例: conan create . --user=test-user --channel=test-channel
- conan create . --user=<USER> --channel=<CHANNEL>
- name: 推送 conan 制品
script:
# 示例: conan upload my-project/1.0.0@test-user/test-channel -r cnb-conan-repo
- conan upload <PACKAGE_NAME> -r <REMOTE_NAME>- 方案2: 使用密钥仓库文件:
master:
push:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
import:
# 引入密钥仓库配置文件
- <SECRET_REPO_URL>
stages:
- name: 配置 conan 仓库凭据
script:
- conan remote add <REMOTE_NAME> <REPO_URL>
- conan remote login -p <PASS_WORD> <REMOTE_NAME> <USER_NAME>
- name: 构建 conan 制品
script:
- conan create . --user=<USER> --channel=<CHANNEL>
- name: 推送 conan 制品
script:
- conan upload <PACKAGE_NAME> -r <REMOTE_NAME>示例:
master:
push:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
import:
- https://cnb.cool/cnb-demo/env-demo/-/blob/main/envs/env.yml
stages:
- name: 配置 conan 仓库凭据
script:
- conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
# 引入密钥仓库配置文件,以环境变量的形式注入 USER_NAME 和 PASS_WORD 的值
- conan remote login -p ${PASS_WORD} cnb-conan-repo ${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 文件中添加以下配置
$:
vscode:
- docker:
image: docker.cnb.cool/examples/language/gcc-13.4
services:
- vscode
- docker
# 使用密钥仓库文件则需要填入以下配置
imports:
# 示例: https://cnb.cool/cnb-demo/env-demo/-/blob/main/envs/env.yml
- <SECRET_REPO_URL>添加远程仓库并登录
- 方案1: 使用内置的 CNB_TOKEN 环境变量
# REMOTE_NAME 您的远程仓库名称
# REPO_URL 您的远程仓库地址
# 示例: conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
conan remote add <REMOTE_NAME> <REPO_URL>
# 示例 remote login -p ${CNB_TOKEN} cnb-conan-repo cnb
conan remote login -p ${CNB_TOKEN} <REMOTE_NAME> cnb- 方案2: 使用密钥仓库文件
# REMOTE_NAME 您的远程仓库名称
# REPO_URL 您的远程仓库地址
# 示例: conan remote add cnb-conan-repo https://conan.cnb.cool/cnb/conan-repo/-/packages/
conan remote add <REMOTE_NAME> <REPO_URL>
# 引入密钥仓库配置文件,以环境变量的形式注入 USER_NAME 和 PASS_WORD 的值
# 示例 remote login -p ${PASS_WORD} cnb-conan-repo ${USER_NAME}
conan remote login -p ${PASS_WORD} <REMOTE_NAME> ${USER_NAME}拉取制品
# 示例: conan download zlib/1.3.1 -r cnb-conan-repo
conan download <PACKAGE_NAME> -r <REMOTE_NAME>编译及推送制品
# 示例1: conan create .
# 示例2: conan create . --user=test-user --channel=test-channel
conan create . --user=<USER> --channel=<CHANNEL>
# 示例1: conan upload my-project/1.0.0 -r cnb-conan-repo (没有 user 与 channel)
# 示例2: conan upload my-project/1.0.0@test-user/test-channel -r cnb-conan-repo (存在 user 与 channel)
conan upload <PACKAGE_NAME> -r <REMOTE_NAME>FAQ
Q:为什么我使用 conan1.X 无法将制品推送至 cnb conan 制品库中
A: 我们不支持 conan1.X 的旧版协议,如果您需要使用 conan1.X 版本推送,请执行 export CONAN_REVISIONS_ENABLED=True 命令打开修订开关后,再进行推送
Q:为什么我上传时会报 409 的错误
A: 目前我们仅支持存储单个 recipe 修订版本和单个 package 修订版本,推送其它修订版本的 recipe 和 package 会被视为 覆盖 操作,请将您制品仓库的版本覆盖策略设置为允许覆盖已有版本,或者更改当前包的版本,再推送即可
Q:为什么我上传时会报 400 的错误
A: 这种情况一般是您的制品名称不符合 conan2 的规范,请您检查并处理后再进行上传操作
更多用法
更多 conan 用法,请查阅官方文档