- 项目负责人:mesch@google.com
- 领域:基础架构、SWD、MOS、开发者
问题陈述
Fuchsia 客户不仅需要能够在 Fuchsia 代码库之外创建 Fuchsia 软件,还需要能够集成此类软件以及 Fuchsia 代码库之外的 Fuchsia 平台软件和当前使用的全局集成构建流程。产品
前者受现有 SDK 支持;后者目前“不可能”,即在实践中无法实现,关于如何实现的理论理解尚未完全建立和记录,并且可能不存在在实践中应用此类理论所需的工具。
解决方案陈述
创建“产品开发套件”(PDK),以及支持使用该套件的惯例、建议和基础架构,这些惯例、建议和基础架构会应用于为产品做出贡献的多个代码库。
作为此 PDK 的组成部分,我们建议:
创建一组工具,用于将所有 build(Fuchsia 和 Petals)中的 Fuchsia 工件(主要是软件包,但也包括内核等)上传到可全局寻址的代码库。
定义命名和元数据惯例,以便在构建、集成和部署位置的代码库位置引用此类工件,并推理此类引用与版本控制、构建参数等的关系。
定义一种格式,用于描述产品集成,该格式能够使用上述名称和元数据引用有助于产品的工件,从而表达全局集成之外的产品配置。
定义如何使用一组工具根据此类产品集成说明组装产品系统映像和 OTA 更新软件包。
作为共享且可全局寻址的代码库,我们建议使用 Fuchsia 的 MOS 实现的 TUF。主要贡献将是用于在集成中引用软件包的命名惯例,这些惯例有望适用于在仓库之间共享二进制工件(例如静态 HTTP 服务器或 CIPD)的其他方式。
这些工具将成为 SDK 的一部分。因此,PDK 不是一个需要单独创建的套件,而是一种利用新工具和新方法来补充 SDK 的特定方式,同时还能使用现有工具。
作为第一个要实现的切实结果,我们提议支持将使用 PDK 的 workstation 产品从其自己的公共代码库发布到 MOS。首先,我们在自己的外部树仓库中创建一个“Hello World”产品,并在该位置进行集成和发布。完成后,我们将工作站反向合并到 Hello World 产品中。
依赖项
SWD
SWD 团队开发了一款适用于 Fuchsia 系统映像的全新汇编工具,用于当前产品的树内汇编,并将随 SDK 一起提供以进行树外汇编。该工具在 SDK 中推出后,我们将使用它进行组装;在此之前,我们将使用目前在全球集成中使用的现有工具进行原型设计。
MOS
我们在此过程中开发了用于上传到 MOS 的工具。它们以新颖的方式使用现有的 MOS API,并以新颖的方式运用 MOS 基础架构。MOS 团队会为我们提供支持。
工作站
工作站团队致力于将工作站从 Fuchsia 代码库中移出,并将使用 PDK 将该产品集成到自己的代码库中,然后将其发布到 MOS。
风险和缓解措施
没有直接干扰现有客户的风险。所有现有流程都将保持不变。我们会在新位置添加新流程,并希望这些流程不会干扰产品开发和发布。
作为间接风险,我们建议将 MOS 用于强度更高的新型用途。这可能会暴露 MOS 的扩缩问题,这些问题可能会干扰现有客户对版本的持续支持。缓解措施是,我们建议基于 MOS/TUF 的所有进程都不是关键进程,可以随时停止。