使用新的CI服务,为Conan-center构建C/ c++包变得更加容易

这篇博客是联合发表在柯南的博客.
的Bintray Conan-center是柯南策划包的主要存储库。用户可以通过将包上传到他们自己的Bintray存储库,然后通过“包含请求”过程提交。
Bintray存储库的下载量很大(2019年迄今为止的下载量为2400万次,其中包括许多tb的传输),这归因于柯南的去中心化性质。虽然Conan-center是最受欢迎的一个,但其他一些存储库,如Bincrafters,包含了更多的软件包,并占了许多下载。
所以有人可能会问,为什么柯南中心没有更多的包裹?事实是提交过程和贡献包是困难的。不仅要学习新的过程,而且要创建所有二进制文件并将其上传到个人Bintray仓库,在将它们提交给Conan-center之前是困难的,并且需要大量的工作,特别是在设置CI服务时。我们听取了你们的反馈,这就是推出这项新服务的原因
向Conan-center贡献包的新方法
向柯南中心贡献包的新过程使用git存储库conan-center-index.这个存储库将包含构建二进制文件所需的所有包配方,然后将其上传到conan中心。该过程描述了如何使用拉取请求向此存储库贡献新包、新版本和修复。

Contributor工作流如下所示。
- 叉的conan-center-indexGit存储库,然后克隆它。
- 用Conan包配方创建一个新文件夹(conanfile.py)
- 推送到Github,并提交拉取请求。
一旦提交了Contributor的pull请求,创建包并将其上传到Conan Center的Conan - Center -index CI过程就开始了。
- CI启动构建,运行一系列自动质量检查,为多个配置构建二进制包,输出结果,并在任何可能的错误消息上发出警告,作为Github注释。构建日志可以直接从Github下载。
- 审核拉取请求。
- 合并pull请求后,构建的二进制文件将自动上传到Conan-center
注意:
上传到柯南中心的新软件包将无法使用“用户/频道”.这是一个新的柯南1.18.2功能,因此这个版本或更高版本需要能够使用以下语法来使用这些包:
(需要)pkg1/1.2.3pkg2/4.5.6和“conan install pkg3/7.8.9 -g=virtualrunenv”
转向以社区为中心的流程
这个新提议的流程的好处是:
- 这是一种更自然的贡献方式,只需要一个Github帐户,除了拉取请求之外,不需要其他请求。这也是社区贡献和合作维护包配方的最自然的方法。它还将作为学习如何打包不同的开源库的集中资源。
- conan-center-index CI服务将实现为许多不同配置构建二进制文件,包括100多种不同的二进制文件,使用不同的操作系统(Windows、Linux、Mac OSX)、编译器(Visual Studio、GCC、apple-clang)、编译器版本、调试/发布、静态/共享等。不需要使用其他外部服务进一步设置自己的CI来创建包(当然,您仍然可以使用自己的CI来开发和测试代码,但不需要在那里创建Conan包)。
- 提交新版本和修复程序要经过相同的过程。根据之前的流程,一旦一个包在柯南中心被接受,就可以上传新的包版本,而不需要重新验证。有了这个新流程,对现有食谱和新版本的所有修改也将经过相同的构建和验证过程。添加新版本包通常通过将新版本添加到列表(并提交拉取请求)来完成,这可以由社区中的任何人完成。
- 当新的编译器版本发布时,生成新的二进制文件会容易得多,这种情况经常发生。例如,Apple-Clang新版本由于激进的更新而迅速影响用户,而社区需要时间来生成新的二进制文件。有了这个新流程,现在就可以为新的编译器版本触发整个存储库的重新构建。此外,通过在可能的情况下默认使用最新版本的软件包,保持柯南中心的一致性也是可能的。
- 使用相同的配方和一些元数据来维护同一个包的多个版本是可能的。这些配方的修复将自动应用于所有这些版本,并且由CI服务构建,将广泛地改进包维护和后移植修复。
- 新的质量检查,例如,确保所有包名称使用小写字母的要求,将有助于自动化审查并获得更高质量的包。它们被实现为钩子,因此用户甚至可以在提交食谱之前使用它们。
如何开始使用:抢先体验计划
存储库现在是公开的,任何人都可以看到它,提交问题、请求等。Conan-center包的消费者可以通过更新他们的Conan客户端,在新包可用后立即开始使用它们。
早期访问计划适用于早期贡献者。CI将只允许注册的贡献者,否则不会生成任何构建。这个想法是为了能够在向整个社区开放之前改进系统和用户体验。
如果你想成为EAP的一部分,请发送一份请愿书到info@conan.io与主题有关“(EAP访问)”或者对此进行评论GitHub的问题.请求访问后,请转到Wiki有关捐款过程的更多详情。
对于任何相关的问题,建议,请使用库的问题.期待把柯南中心做得更大,对社区更有用!
相关文章: