分散式产品集成

  • 项目负责人:mesch@google.com
  • 领域:基础架构、SWD、MOS、开发者

问题陈述

前者已获得现有 SDK 支持;后者目前“不可能”,也就是说,它在实践中尚未实现,关于如何实现该理论的理论认识尚未完全建立和记录,在实践中应用此类理论所需的工具可能不存在。

解决方案声明

创建“产品开发套件”(PDK),以及支持使用该套件且适用于构成产品的多个代码库的惯例、建议和基础架构。

作为此 PDK 的组成部分,我们建议:

  1. 创建一组工具,用于从所有 build(Fuchsia 和花瓣)上传到 Fuchsia 工件(主要是软件包,还包括内核等)的全局可寻址代码库。

  2. 定义命名和元数据惯例,以便在构建、集成和部署位置跨代码库位置引用此类工件,并在版本控制、构建参数等方面推断此类引用。

  3. 定义一种格式,以通过引用使用上述名称和元数据对产品有贡献的工件,来描述产品集成,从而在全局集成之外表示产品的配置。

  4. 用于定义如何使用一组工具根据此类产品集成说明来组装产品系统映像和 OTA 更新软件包。

作为可全局寻址的共享存储库,我们提议使用 Fuchsia (MOS) 提供的 TUF 实现。主要贡献是命名软件包以在集成时进行参考,这些命名惯例预计适用于在代码库之间共享二进制工件的其他方式,例如静态 HTTP 服务器或 CIPD。

这些工具将是 SDK 的一部分。因此,PDK 不仅仅是一个要创建的单独套件,而是一种为 SDK 提供新工具以及使用新工具和现有工具的新方式。

作为第一个实际结果,我们提议使用 PDK 从自己的公开代码库向 MOS 发布工作站产品。首先,我们在其自己的树外代码库中创建一个“Hello World”产品,然后对其进行集成并从中发布。待其正常运行后,我们会将工作站反向合并到 Hello World 产品中。

依赖项

瑞典克朗

SWD 团队开发了一款适用于 Fuchsia 系统映像的新型组装工具,用于当前的树组装产品,并与 SDK 一起装载,以进行树组外组装。该工具在 SDK 中可供使用后,我们将使用它进行组装,然后利用全球集成中当前使用的现有工具进行原型设计。

周一

我们开发了可上传到 MOS 的工具,他们以新颖的方式使用现有的 MOS API,并以全新的规模运用 MOS 基础架构。MOS 团队将为我们提供支持。

工作站

工作站团队致力于将工作站从 Fuchsia 代码库移出,并使用 PDK 将产品集成到其自己的代码库中,并将其发布到 MOS。

风险和缓解措施

没有干扰现有客户的直接风险。所有现有流程保持不变。我们会在新的流程中加入预计不会干扰产品开发和发布的新流程。

作为间接风险,我们提议将 MOS 用于新目的且强度更高。这可能会暴露 MOS 的扩缩问题,从而干扰现有客户对版本的持续支持。缓解措施是,我们基于 MOS/TUF 提议的所有流程都不是关键,并且可以随时停止。