发布软件包¶
配置 PyPI Trusted Publishing¶
发布 workflow 为 .github/workflows/workflow.yml;ci.yml 只测试,不发布。
首次发布在 PyPI Publishing 添加 pending publisher:
| 字段 | 值 |
|---|---|
| 项目名 | django-modelsheet |
| GitHub owner | svalench |
| Repository | django-modelsheet |
| Workflow 文件名 | workflow.yml |
| Environment | pypi |
已有项目应在项目 Publishing 设置中添加。Pending publisher 不预留名称。无需 API token 或 GitHub secret:任务使用 OIDC、id-token: write 和 pypi environment。
保存后在 Actions 选择 Publish to PyPI → Run workflow → main。不勾 publish 只验证构建,勾选则上传当前版本。先构建 frontend、执行后端/单元/浏览器测试、构建 wheel/sdist 并验证安装,最后由独立任务上传。
也可发布匹配版本的 GitHub Release(包括 prerelease),触发同一流程。Tag 必须与 pyproject.toml 版本一致;普通 push 不发布,非 main 分支禁止手动上传。已上传版本不可替换,后续必须升版本。
维护者检查清单¶
- 运行完整 CI 矩阵、浏览器、包安装与迁移检查。
- 检查依赖许可证和目标名称可用性。
- 更新
pyproject.toml、modelsheet/__init__.py、frontend/package.json版本、lockfile、changelog 与兼容说明。 - 运行 frontend 的
npm ci && npm run build,再python -m build与python -m twine check dist/*;检查静态资源、模板、翻译与迁移。 - 在干净环境安装 wheel,运行 migrate/collectstatic,验证从旧版升级,并保留历史迁移。
- 获得发布授权且已配置凭据后,用
python -m twine upload --repository testpypi dist/*发布 TestPyPI 并验证安装;依赖从正式索引安装。 - 审核后打 tag,通过 Trusted Publishing 或维护者凭据发布 PyPI。
本地构建不会上传、push 或公开发布。python scripts/check_pypi_name.py 的 404 仅表示当时名称未占用,不代表预留。