- 專案負責人:mesch@google.com
- 領域:基礎架構、SWD、MOS、開發人員
問題陳述
Fuchsia 客戶需要具備的功能,不僅是建立 Fuchsia 存放區以外的 Fuchsia 軟體,還包括整合 Fuchsia 存放區和目前使用的全局整合建構程序以外的 Fuchsia 平台軟體。
前者可透過現有 SDK 支援;後者目前「不可能」,也就是在實務上無法執行,且尚未建立及記錄如何在理論上執行的相關資訊,而且在實務上應用這類理論所需的工具可能不存在。
解決方案陳述式
建立「產品開發套件」(PDK) 和相關規則、最佳化建議和基礎架構,這些元素可支援套件的使用,並套用至為產品做出貢獻的多個存放區。
我們建議的 PDK 元素如下:
建立一組工具,從所有版本 (Fuchsia 和 petal) 上傳至全球可位址的 Fuchsia 構件 (大多是套件,但也包括核心等) 存放區。
定義命名和中繼資料慣例,以便在建構、整合和部署位置中,參照存放區位置中的這類構件,並針對版本控制、建構參數等方面推論這類參照。
定義格式,以便描述產品整合作業,藉此表達全域整合作業以外的產品設定,方法是使用上述名稱和中繼資料參照為產品提供貢獻的構件。
定義如何使用一組工具,根據產品整合說明組合產品系統映像檔和 OTA 更新套件。
我們建議使用 Fuchsia 的 MOS 實作項目,做為共用且可全域位址的存放區。主要貢獻是用於整合參考的套件命名慣例,這應該可用於在儲存庫之間共用二進位構件的方式,例如靜態 HTTP 伺服器或 CIPD。
這些工具將成為 SDK 的一部分。因此,PDK 並非要建立的獨立套件,而是一種特定方式,可透過新工具和新方式,補足 SDK 以及現有工具的功能。
作為第一個可實現的目標,我們建議使用 PDK 從自家公開存放區發布工作站產品,並將其發布至 MOS。我們會先在專屬的樹狀結構外存放區中建立「Hello World」產品,然後將其整合並從該處發布。完成後,我們會將工作站反向合併至 Hello World 產品。
依附元件
SWD
SWD 團隊開發了 Fuchsia 系統映像檔的新型組合工具,可用於產品目前的樹狀結構組合,並與 SDK 一併提供,以便進行非樹狀結構組合。當 SDK 提供這項工具後,我們會用來進行組合,在此之前,我們會使用目前用於全球整合的現有工具製作原型。
MOS
我們也因此開發了上傳至 MOS 的工具。他們以新穎的方式使用現有的 MOS API,並以新穎的規模運用 MOS 基礎架構。MOS 團隊會協助我們進行這項工作。
工作站
工作站團隊致力於將工作站移出 Fuchsia 存放區,並將使用 PDK 將產品整合至其專屬存放區,並發布至 MOS。
風險與緩解措施
不會直接影響現有客戶。所有現有程序都會維持不變。我們會在新的地點新增新程序,但不希望這些程序會干擾產品開發和發布作業。
由於間接風險,我們建議您將 MOS 用於較高強度的新型用途。這可能會導致 MOS 出現規模問題,進而影響現有客戶對版本的持續支援。我們建議以 MOS/TUF 為基礎的程序都不是關鍵程序,因此可以隨時停止。