测试 GitHub 操作、Cirrus CI、文档和 Python 包的发布版本。
项目描述
工作流沙箱
用于测试 GitHub 操作和 Cirrus CI 以构建和发布 Python 包版本的虚拟项目。
这将是测试 PyPI 上的(虚拟)Python 包,具有包名workflow-sandbox和模块名workflow_sandbox。
实践
- 这个虚拟项目松散地采用发布流分支模型/策略。(Loosley,因为我不会总是使用功能分支。)
- 版本控制是使用优秀的自省
setuptools_scm,使用release-branch-semver版本方案。 - 当一个发布候选被确定时(a574270,下面的 C):
- 在这个例子中,发布候选被认为是令人满意的,并且使用一个虚拟提交来创建6006a6f(下面的 F),以便它可以被唯一地标记为
v0.2.0.
在图片中,这看起来像:
D -- F [maintenance/0.2.x]
/ ^ [v0.2.0]
B -- C---E [master]
^
[v0.2.0rc1]
更新:请参阅#13,了解为什么这是必要的和更好的替代方案(使用 v0.2.0rc1 和 v0.2.0 标记 C/D)。
实际版本,例如0.2.0和错误修复版本0.2.1,0.2.2等将单独标记maintenance/0.2.x。此分支将不包含任何开发,但会从 master 中挑选错误修复。
路线图
GitHub 操作
- 使用
actions/create_release. actions/upload-release-asset使用...在 GitHub 上发布版本- ...
body上面的内容是从基于 git 标签的相应发行说明中提取的(参见#14)。 - 使用
pypa/gh-action-pypi-publish:- 所有标记的版本(包括候选版本)都会自动发布在 PyPI 和 TestPyPI 上。
- 所有未标记的推送
master和maintenance/*分支都会自动在 TestPyPI 上发布,并带有适当的dev版本后缀。
- 调查触发创建与分支推送事件(参见#8)。
- 使用分支工作流
actions/[up/down]load-artifact(参见例如chrisjbillington/desktop-app#7)和/或manylinux(GitHub Action RalfG/python-wheels-manylinux-build)构建多个轮子。 - 自动化文档构建并推送到
gh-pages分支。
卷云CI
- 格式化使用
black. - 使用
flake8.
致谢
其中大部分是由其他开发社区的实践以及与@chrisjbillington和@philipstarkey进行的许多有益对话所指导的。