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

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

  • 创建 ConanCenter Github 仓库的分支: https://github.com/conan-io/conan-center-index

  • 创建您项目所需的软件包和版本的列表。此列表也可以添加到分支中,并在那里维护(当团队需要时,可以通过 PR 添加和删除软件包)。

  • 创建一个脚本,首先 conan export 列表中的所有软件包,然后 conan create --build=missing 它们。不要将 user/channel 添加到这些软件包中,将它们用作 zlib/1.2.13 而无需用户通道要简单得多。 user/channel 部分主要推荐用于您自己的专有软件包,而不是开源 ConanCenter 软件包。

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

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

此流程相对简单,并且具有许多优点,可以降低之前描述的风险

  • 没有中央存储库中断会影响您的构建。

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

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

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

从上游更新

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

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

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

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

  • 您可以将软件包上传到辅助的“测试”服务器存储库。然后针对该测试服务器测试您的项目,以检查您的项目是否未被新的 ConanCenter 软件包破坏。

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