Conan 中心软件包的新二进制构建服务
抢先体验计划 (EAP)
Bintray Conan 中心 是经过精心挑选的 Conan 软件包的主要存储库。用户可以通过将软件包上传到他们自己的 Bintray 存储库,然后通过“包含请求”流程提交,来为其做出贡献。
Bintray 存储库占下载量的很大一部分(到 2019 年为止,已有 2400 万次下载,包括许多 TB 的传输),这归因于 Conan 的去中心化特性。虽然 Conan 中心是最受欢迎的,但其他一些存储库,如 Bincrafters,包含更多软件包,并占这些下载的很大一部分。
因此,有人可能会问,为什么 Conan 中心没有更多软件包?事实是,提交流程和贡献软件包都很困难。不仅需要学习新的流程,而且在提交到 Conan 中心之前,创建所有二进制文件并将其上传到个人 Bintray 存储库也比较困难,并且需要大量工作,尤其是在设置 CI 服务时。我们听取了您的反馈,这就是推出这项新服务的原因。
一种向 Conan 中心贡献软件包的新方法
向 Conan 中心贡献软件包的新流程使用 git 存储库 conan-center-index。此存储库将包含所有软件包配方,在此基础上构建二进制文件,然后上传到 Conan 中心。存储库自述文件和 Wiki 描述了如何使用此存储库的拉取请求贡献新软件包、新版本和修复。
贡献者的工作流程如下
- 分叉 conan-center-index git 存储库,然后克隆它。
- 使用 Conan 软件包配方 (conanfile.py) 创建一个新文件夹。
- 推送到 GitHub,并提交拉取请求。
提交贡献者的拉取请求后,将开始 conan-center-index CI 流程,该流程用于创建软件包并将其上传到 Conan 中心。
- CI 启动构建,运行一系列自动质量检查,为多种配置构建软件包二进制文件,并输出结果,并在 GitHub 评论中显示任何可能的错误消息。构建日志可以直接从 GitHub 下载。
- 拉取请求将被审查。
- 拉取请求合并后,构建的二进制文件将自动上传到 Conan 中心。
注意:上传到 Conan 中心的新软件包将不使用 user/channel
。这是 Conan 1.18.2 的一项新功能,因此需要此版本或更高版本才能使用以下语法使用这些软件包。
[requires]
pkg1/1.2.3
pkg2/4.5.6
迈向以社区为中心的流程
此新提议流程的优势在于
- 这是一种更自然的方式来做出贡献,只需要一个 GitHub 帐户,除了拉取请求之外,不需要其他请求。对于社区贡献和协作维护软件包配方来说,这也是最自然的方法。它还将作为学习如何打包不同开源库的集中资源。
- conan-center-index CI 服务将实现为许多不同的配置构建二进制文件,包括 100 多个不同的二进制文件,以及不同的操作系统(Windows、Linux、Mac OSX)、编译器(Visual Studio、GCC、apple-clang)、编译器版本、调试/发布、静态/共享等。无需进一步设置自己的 CI 与其他外部服务来创建软件包(当然,您仍然可以拥有自己的 CI 来开发和测试代码,但此处不需要创建 Conan 软件包)。
- 提交新版本和修复将经历相同的流程。根据之前的流程,一旦软件包在 Conan 中心被接受,就可以上传新软件包版本,而无需重新验证。通过此新流程,对现有配方的所有修改以及新版本也将经历相同的构建和验证流程。添加新软件包版本通常是通过将新版本添加到列表中(并提交拉取请求)来完成的,这可以由社区中的任何人完成。
- 发布新的编译器版本时,生成新二进制文件将变得容易得多,这种情况经常发生。例如,Apple-Clang 的新版本会很快影响用户,因为更新非常频繁,而社区需要时间才能生成新的二进制文件。通过此新流程,现在可以重新构建整个存储库以获取新的编译器版本。此外,还可以通过尽可能使用软件包的最新版本来保持 Conan 中心的稳定性。
- 可以使用相同的配方和一些元数据维护同一软件包的多个版本。对这些配方的修复将自动应用于所有这些版本,并且通过 CI 服务构建,将极大地改进软件包维护和修复移植。
- 新的质量检查,例如确保所有软件包名称都使用小写的要求,将有助于自动化审查并实现更高质量的软件包。它们作为钩子实现,因此用户甚至在提交配方之前也可以使用它们。
如何开始使用:抢先体验计划
存储库现在是公开的,任何人都可以查看它、提交问题、请求等。Conan 中心的软件包使用者可以在新软件包可用后立即开始使用它们,只需更新他们的 Conan 客户端即可。
抢先体验计划适用于早期贡献者。CI 仅允许注册的贡献者,否则不会生成构建。这样做的目的是能够在向整个社区开放之前改进系统和用户体验。
如果您想参加此 EAP,请发送请求到 info@conan.io
,主题为 [EAP access]
或在 此 GitHub 问题 上添加评论。请求访问后,请访问 Wiki 以获取有关贡献流程的更多详细信息。
对于任何相关问题或建议,请使用 存储库问题。期待使 Conan 中心变得更大,并为社区提供更多实用功能!