将预构建软件包发布到 CIPD

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

将预构建的软件包发布到 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 架构 名称(例如,amd64 表示 64 位 Intel 二进制文件,而不是 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 兼容的操作系统名称。
      • linuxmac 用于 <CIPD_OS>(而非 Linuxosxdarwin) 或 mach)。
    • <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 是用于 基于 SwiftShader 的 Vulkan ICD/驱动程序,专为 Fuchsia 构建。

设置 CIPD 软件包版本控制

Fuchsia 开发者需要能够确定哪些源代码用于 生成每个 CIPD 软件包实例。

版本

如需确定预构建软件包的来源, 每个tag 带有版本标识符的修订版本,其格式如下:

version:<VERSION_ID_OF_INSTANCE>

例如,version:77.0.3835.0version:176326.

git_revision

除了指定 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 二进制文件。