创建和托管您自己的 ConanCenter 二进制文件

将您需要的软件包的副本托管在您自己的服务器上,可以通过从 ConanCenter 下载二进制文件然后将其上传到您自己的服务器来完成。但是,完全拥有完整的供应链并在您自己的 CI 系统中创建二进制文件会更好。因此,在生产中使用 ConanCenter 软件包的推荐流程是

  • 克隆 ConanCenter Github 仓库:https://github.com/conan-io/conan-center-index

  • 为您的项目创建一个所需软件包和版本的列表。此列表也可以添加到您的克隆中并进行维护(团队需要时可以通过 PR 添加和删除软件包)。

  • 创建一个脚本,首先 conan export 列表中的所有软件包,然后 conan create --build=missing 它们。

  • 将您的构建软件包上传到您在生产中使用的服务器,而不是 ConanCenter。

注意

最佳实践

  • 不要为从 ConanCenter 克隆创建的软件包添加 user/channel,以 zlib/1.2.13 形式创建和使用它们会更简单,无需用户频道。 user/channel 部分主要推荐用于您自己的专有软件包,而不是用于开源 ConanCenter 软件包。它增加了与上游的更多差异,从而增加了维护成本,而附加价值却很少。

  • 不要将从 conan-center-index Github 仓库克隆创建的软件包和配方与来自 ConanCenter 中央服务器的软件包混合使用。一旦您从克隆创建了第三方的某些二进制文件,强烈建议完全断开与 ConanCenter 的连接(您可以删除 remote,并且可以将包含您自己的远程的 remotes.json 文件添加到您可以使用 conan config install/install-pkg 分发的配置中),并从您的克隆创建所有第三方软件包。

这是基本的流程思路。我们将尽快添加示例和工具以进一步自动化此流程。

此流程相对简单,并且具有许多可以减轻上述风险的优势

  • 中央仓库中断不会影响您的构建。

  • 中央仓库的更改不会破坏您的项目,您完全控制何时以及如何更新软件包中的这些更改(如下所述)。

  • 您可以自定义、调整、修复并完全控制使用哪些版本,并在几分钟内发布修复程序,而不是几周。您可以应用中央仓库不接受的自定义。

  • 您完全控制二进制文件的供应链,从源代码(配方)到二进制文件,实际上消除了中央仓库的大多数潜在供应链攻击。

从上游更新

从上游 conan-center-index Github 仓库更新仍然是可能的,并且可以以完全受控的方式完成

  • conan-center-index 上游主分支的最新更改合并到您的克隆中。

  • 如果您想检查和审核这些更改,可以分析差异(一些修剪您不使用的配方差异的自动化工具可能会很有用)。

  • 触发上述过程将有效地重建所需的新的二进制文件。如果您的配方不受更改影响,该过程将避免重建二进制文件(感谢 --build=missing)。

  • 您可以将软件包上传到辅助“测试”服务器仓库。然后测试您的项目与该测试服务器,以检查您的项目是否因新的 ConanCenter 软件包而损坏。

  • 一旦您验证了所有内容都与新的软件包良好,您可以将它们从辅助“测试”仓库复制到您的主生产仓库以开始使用它们。