SuperAPI AI 工具集

publish-package

部署与运维

查看项目

更新于 10-16 02:33

技能介绍

用途:按 Switchyard 当前的 OSS 风格 NeMo 发布形态,在 GitHub Actions 中构建并发布包,把临时开发 wheel 与正式标签触发的发布构建区分开。

主要能力与通道:开发 wheel 制品通过手动触发 publish.yml 并设置 build_dev_artifact=true 生成,产物为保留一天的 GitHub artifact;开发矩阵制品通过 build_dev_matrix=true 生成完整矩阵制品;正式发布由根目录 vMAJOR.MINOR.PATCH 标签触发 .github/workflows/publish.yml,产出完整发布制品矩阵,并通过 uv publish 的 PyPI Trusted Publishing 发布。手动分支构建只产出制品,只有根发布标签才发布到 PyPI。

使用方式:开发 wheel 走 workflow-dispatch,会打上构建本地 .dev 版本,构建一个 manylinux x86_64 abi3 wheel,上传为 dev-wheel-linux-x86_64 并保留一天,再下载校验 wheel 的 Name 与 Version。输入项包括 build_dev_artifact(默认 false)、build_dev_matrix(默认 false)、dev_version(默认 0.0.1.dev0)。制品型开发构建不需要发布密钥;正式发布使用 uv publish --trusted-publishing always,无需 PyPI token。首次打标签前需创建待定的 PyPI 可信发布者,项目 nemo-switchyard、Owner NVIDIA-NeMo、仓库 Switchyard、工作流 publish.yml、环境 pypi。

限制与护栏:除非用户明确要求基于标签发布,否则不要创建标签;不要为开发 wheel 制品创建 GitHub Release;不要从手动工作流分发把开发 wheel 发布到 PyPI;.dev 制品需保持公开安全,因为 GitHub Actions 制品可能被共享审阅;完整 wheel 矩阵可手动运行验证,但 PyPI 发布只属于根 vMAJOR.MINOR.PATCH 标签发布;手动开发构建应只构建一个 Linux x86_64 wheel 制品并保留一天;使用名为 pypi 的 GitHub 环境配合 PyPI Trusted Publishing,不要添加长期 PyPI token。

本地预检:修改发布脚本、包元数据、发布文档或本技能时运行:uv run ruff check scripts/release/set_dev_wheel_version.py tests/test_dev_wheel_versioning.py;uv run pytest tests/test_dev_wheel_versioning.py -v;python scripts/release/set_dev_wheel_version.py 0.0.1.dev0 --print-version;git diff --check。docs/ 下文档变更时,可行时运行 cd docs 后 make publish。