将预构建软件包发布到 CIPD

本页面介绍了如何将您的软件作为预构建 CIPD 软件包集成到 Fuchsia 项目中。

如需将预构建的软件包发布到 CIPD,请参阅以下准则:

将预构建的软件包发布到 CIDP 后,请更新 Fuchsia Jiri 清单,确保软件包的内容可供 Fuchsia 的持续集成 (CI) 和 Fuchsia 开发者使用。

前提条件

如果您计划使用 Fuchsia 归档 (FAR) 发布预构建软件包,请参阅构建软件包(使用 FAR)。

如果您的预构建软件包包含 ELF 二进制文件(无论是否位于 FAR 中),则需要删除这些二进制文件。此外,对于 Fuchsia ELF 二进制文件,您需要生成并上传伴生符号软件包,以支持符号化和调试。

选择 CIPD 软件包路径

每个 CIPD 软件包在 CIPD 存储区中都有一个专属路径。此路径的命名惯例取决于预构建文件是由 Fuchsia 项目生成(或维护)的。

由外部项目贡献的 CIPD 软件包

对于外部团队或项目贡献的预构建 CIPD 软件包,请使用以下 CIPD 路径命名惯例:

<PROJECT>/fuchsia/<PACKAGE>-<CIPD_TARGET_ARCHITECTURE>

<CIPD_TARGET_ARCHITECTURE> 是与 CIPD 兼容的 CPU 架构名称(例如,对于 64 位 Intel 二进制文件,请使用 amd64,而不是 x64x86_64)。

请参阅以下示例:

由 Fuchsia 项目生成的 CIPD 软件包

对于由 Fuchsia 项目生成或维护的预构建软件包,请使用以下 CIPD 路径命名惯例:

  • fuchsia/ 用作所有预构建软件包的根项目目录。

  • 对于从第三方开源项目生成的预构建文件,请使用 fuchsia/third_party/ 下的路径。

    例如,fuchsia/third_party/ninja/ 包含 Ninja 构建工具预构建二进制文件的软件包,而 fuchsia/sdk/core 包含与 Fuchsia 项目生成的 Fuchsia IDK 归档对应的软件包。

  • 对于主机预构建文件的最后一个目录条目,请使用以下惯例:

    <CIPD_OS>-<CIPD_HOST_ARCHITECTURE>
    
    • <CIPD_OS> 是与 CIPD 兼容的操作系统名称。
      • <CIPD_OS> 使用 linuxmac(而不是 Linuxosxdarwinmach)。
    • <CIPD_HOST_ARCHITECTURE> 是与 CIPD 兼容的 CPU 架构名称。
      • i386amd64arm64 用于 <CIPD_HOST_ARCHITECTURE>(而不是 x86x64aarch64)。

    例如,fuchsia/third_party/clang/mac-amd64 是用于包含 64 位 Intel OS X Clang 工具链二进制文件的 CIPD 软件包的路径。

  • Fuchsia ELF 预构建文件需要使用以如下方式结尾的路径:

    arch/<ARCH>
    
    • <ARCH> 是与 Fuchsia 兼容的 CPU 架构名称。

      • 使用 x64arm64(而非 amd64x86_64aarch64)。

    对于 64 位 Intel 二进制文件,amd64 仅用于主机预构建文件,而 x64 仅用于 Fuchsia ELF 预构建文件。

    例如,fuchsia/third_party/swiftshader/arch/x64 是用于为 Fuchsia 构建的基于 SwiftShader 的 Vulkan ICD/驱动程序的路径。

设置 CIPD 软件包版本控制

Fuchsia 开发者需要能够识别用于生成每个 CIPD 软件包实例的源代码。

version

如需识别预构建软件包的来源,请按照以下形式使用版本标识符标记每个修订版本:

version:<VERSION_ID_OF_INSTANCE>

例如 version:77.0.3835.0version:176326.

Git 修订版本

除了指定 version(例如,构建第三方开源项目)之外,还应添加 Git 提交哈希值:

git_revision:<GIT_COMMIT_HASH>

git_revision 标记可标识用于构建二进制文件的源代码树的确切 Git 提交。

如果基于同一 Git 提交哈希构建了多个修订版本(例如,第一个实例错误地在调试模式下构建,而不是在发布模式下构建),您可以为新修订版本的标记使用一个以短划线 (-) 分隔的后缀(如 git_revision:<GIT_COMMIT_HASH>-2 中所示)。

上传 CIPD 软件包

如需手动上传新的 CIPD 软件包修订版本,您需要先使用 cipd auth-login 进行身份验证,然后再运行 cipd create 命令。如需查看示例说明,请访问此 CIPD 页面

强烈建议使用 cipd.yaml 文件。较好的做法是根据您的重新构建脚本自动生成此文件,并在注释中添加上传说明,如以下伪示例所示:

# This file was auto-generated by build-project-fuchsia-package.sh
# For more information, see http://myproject.url/docs/fuchsia/
#
# To upload the files in this CIPD package do:
#
#   TAG=git_revision:cd13435a975057b0ad0b72636f6c8323113c9c8b
#   VERSION=version:22.0.773.345
#   cipd create -pkg-defs cipd.yaml -tag $TAG -tag $VERSION
#
package: myproject/fuchsia/mypackage-arm64
description: mypackage's Fuchsia binaries from myproject.
data:
  - file: LICENSE # or NOTICE(.txt)
  - file: mypackage.far

如果您的软件包包含 Fuchsia ELF 二进制文件,请记得同时上传配套符号软件包