项目设置¶
本教程所需的代码位于 examples2
仓库中,请克隆并进入该文件夹
$ git clone https://github.com/conan-io/examples2.git
$ cd examples2/ci/game
服务器仓库设置¶
我们需要在同一服务器上设置 3 个不同的仓库。请确保 Artifactory 正在运行并可用。您可以从 下载页面 下载免费的 Artifactory CE,并在您自己的计算机上运行它,或者您可以使用 Docker。
$ docker run --name artifactory -d -p 8081:8081 -p 8082:8082 releases-docker.jfrog.io/jfrog/artifactory-cpp-ce:7.63.12
# Can be stopped with "docker stop artifactory"
当您启动它时,可以访问 https://:8081/ 进行检查(用户:“admin”,密码:“password”)。如果您有另一个可用的 Artifactory,只要您可以在其中创建新仓库,也可以使用它。
第一步,登录到 Web UI 并 创建 3 个不同的本地仓库,分别名为 develop
、packages
和 products
。
然后根据 project_setup.py
文件,以下是配置服务器所需的必要环境变量。请定义 ARTIFACTORY_URL
、ARTIFACTORY_USER
和/或 ARTIFACTORY_PASSWORD
(如有必要)以适应您的设置。
# TODO: This must be configured by users
SERVER_URL = os.environ.get("ARTIFACTORY_URL", "https://:8081/artifactory/api/conan")
USER = os.environ.get("ARTIFACTORY_USER", "admin")
PASSWORD = os.environ.get("ARTIFACTORY_PASSWORD", "password")
初始依赖图¶
警告
项目初始化将删除服务器中以下 3 个仓库的内容:
develop
、products
和packages
。“
examples2/ci/game
”文件夹包含一个.conanrc
文件,该文件定义了一个本地缓存,因此本教程中执行的命令不会污染或更改您的主 Conan 缓存。
$ python project_setup.py
这将执行多项任务:清理服务器仓库、为依赖图创建初始的 Debug
和 Release
二进制文件并上传到 develop
仓库,然后清理本地缓存。请注意,在此示例中,我们为了方便使用 Debug
和 Release
作为不同的配置,但在实际情况下,这些将是不同的配置,例如 Windows/X86_64、Linux/x86_64、Linux/armv8 等,在不同的计算机上运行。
设置完成后,可以检查到 3 个远程仓库已定义,但只有 develop
远程仓库已启用,并且本地缓存中没有包。
$ conan remote list
products: https://:8081/artifactory/api/conan/products [Verify SSL: True, Enabled: False]
develop: https://:8081/artifactory/api/conan/develop [Verify SSL: True, Enabled: True]
packages: https://:8081/artifactory/api/conan/packages [Verify SSL: True, Enabled: False]
$ conan list *
Found 0 pkg/version recipes matching * in local cache
Local Cache
WARN: There are no matching recipe references
重要
远程仓库的顺序很重要。如果 products
仓库被启用,它将比 develop
的优先级更高,因此如果它包含新版本,将从那里获取。
这个位于 develop
仓库中的包依赖图是我们教程的起点,被认为是项目功能稳定且处于“开发”状态,开发人员可以执行 conan install
来处理任何不同的包。