软件包流水线:单一配置¶
我们将从最简单的情况开始,在这种情况下我们只需要构建 1 个配置,并且该配置可以在当前的 CI 机器上构建。
正如我们之前在介绍不同的服务器二进制仓库时描述的那样,其思想是软件包构建默认情况下只会使用 develop 仓库,该仓库被认为是开发者和 CI 作业的稳定仓库。
此流水线从一个干净的状态开始,缓存中没有软件包,并且只启用了 develop 仓库。
使用这种配置,CI 作业可以这样做
$ cd ai
$ conan create . --build="missing:ai/*"
...
ai/1.1.0: SUPER BETTER Artificial Intelligence for aliens (Release)!
ai/1.1.0: Intelligence level=50
请注意,--build="missing:ai/*" 在某些情况下可能不是完全必要的,但它可以节省其他情况下的时间。例如,如果开发者只是更改了仓库的 README 文件,并且根本没有更新版本号,Conan 将不会生成新的 recipe revision,并将其检测为无操作,从而避免不必要地从源代码重新构建二进制文件。
如果我们在单一配置场景中并且构建成功,对于这种简单的情况,我们不需要进行推广,只需将构建的软件包直接上传到 products 仓库即可,products pipeline 稍后会从中选取。
# We don't want to disrupt developers or CI, upload to products
$ conan remote enable products
$ conan upload "ai*" -r=products -c
$ conan remote disable products
由于缓存最初是干净的,所有 ai 软件包都是在此流水线中构建的。
这是一个非常简单的场景,让我们转向一个更现实的场景:需要构建多个配置。