制作新的 Python 库发布

本指南展示如何向 PyPI 发布新的 Perfetto Python 库。

包版本自动从 CHANGELOG 派生(顶部的 vX.Y 条目映射到 PyPI 版本 0.X.Y),因此没有单独的版本提升步骤。

正常路径是 finalize-release.yml GitHub 工作流的 publish-pypi 作业,它作为完成发布的一部分运行。下方的手动路径由 tools/release/release_python.py 驱动,是备用方案。

预构建文件锁定

该包在 python/perfetto/prebuilts/manifests 下附带预构建清单,TraceProcessor 会下载其中锁定的 trace_processor。这些清单只在发布打标签之后才会滚动到 main,因为它们对 LUCI 从该标签构建的二进制文件进行了哈希。因此,标签 vX.Y 处的代码树仍然锁定上一个版本,直接从该标签朴素构建的包会附带错误的 trace_processor。

因此,两条发布路径都会在构建之前为 vX.Y 重新生成清单;并且当设置了 PERFETTO_PYPI_RELEASE 而 python/perfetto/prebuilts/manifests/version.py 中的锁定版本与包版本不匹配时,python/setup.py 会拒绝构建。绝不发布在没有设置该变量的情况下构建的包。

前置条件

发布

  1. 选择要从中发布的发布提交 —— 通常是 vX.Y 标签提交。例如:
COMMIT=$(git rev-parse v56.0^{commit})
  1. 运行发布脚本,传入该提交:
tools/release/release_python.py --publish --commit "$COMMIT"

脚本将执行以下步骤:

  1. 脚本完成后,为 download_url 更新推送新分支并创建拉取请求。此最终 PR 合并后,发布完成。