贡献
发布流程
公开发布分为维护者审核、GitHub 导入、Pages、release 和 PyPI/TestPyPI。
发布前
make public-review
make public-publish-check PUBLIC_PUBLISH_PHASE=pre-publish V=0.6.7GitHub
维护者 review 通过后,从已审核的 GitHub main commit 创建 tag 和 release。
不要从未同步的候选分支直接创建公开 release。
PyPI
PyPI metadata 指向:
- Repository:
https://github.com/kingsoftcloud/ksadk-python - Documentation:
https://kingsoftcloud.github.io/ksadk-python/
上传凭证不进入仓库。推荐使用 PyPI Trusted Publishing / GitHub OIDC; 如需临时 token,也只能放在发布系统 secrets 或维护者本地环境中。
真正执行 make publish 或 make publish-test 前,必须填好
docs/maintainer-approval-record.md。该记录需要包含已审核 commit SHA、
发布策略和维护者签署。
正式发布 workflow
正式发布走 .github/workflows/publish-pypi.yml,由 GitHub Release
published 或 workflow_dispatch 触发。
新增
该 workflow 取代了过去的手动 make publish 上传,正式包统一通过
OIDC Trusted Publishing 上传到 PyPI。
workflow 执行步骤如下:
- 同步前端静态资源:
make sync-ksadk-web-static,默认从@kingsoftcloud/ksadk-web@latest拉取dist-ksadk解包到打包目录; 通过workflow_dispatch触发时可传ksadk_web_version输入指定版本 (如1.2.3)。 - 发布前预检:
make public-preflight,串起public-audit、public-test、docs-site-build以及public-build-check。 - 构建与内容检查:
public-build-check内执行uv build并twine check dist/*,校验 wheel 与 sdist 元数据。 - OIDC 上传:用
pypa/gh-action-pypi-publish通过 Trusted Publishing 上传,job 运行在pypienvironment 并声明id-token: write。
# .github/workflows/publish-pypi.yml 触发与权限要点
on:
release:
types: [published]
workflow_dispatch:
inputs:
ksadk_web_version:
description: KsADK Web npm version to bundle
required: false
default: latest
permissions:
id-token: write # OIDC Trusted Publishing 必需不要配 PYPI_API_TOKEN
正常发布路径完全走 OIDC Trusted Publishing,仓库和 workflow secrets
里都不需要 PYPI_API_TOKEN。只有 Trusted Publishing 不可用的回退
场景才考虑临时 token,且必须放在 GitHub environment secrets 中。
本地复刻发布前预检(示例版本号按当前发版替换):
make sync-ksadk-web-static
make public-preflight
make public-publish-check PUBLIC_PUBLISH_PHASE=pre-publish V=0.6.7