构建pip/conda包是否有类spotless-changelog的发布自动化工具
Python/Conda 包发布场景对标 spotless-changelog 的解决方案
不需要完全手动串联各环节,Python 生态目前已有多个成熟工具可以覆盖 spotless-changelog 的核心能力,不需要编写大量自定义脚本。
首先先对齐 spotless-changelog 的核心能力基准,方便你做对标判断:
- 强制校验符合 Keep a Changelog 规范的变更日志文件
- 基于变更日志内容自动推导语义化版本号
- 自动同步版本号到所有项目配置文件(pyproject.toml、包内
__init__.py、conda 构建配方等) - 自动生成版本对应的 Git 提交、打符合规范的 Git 标签
- 对接构建发布流程,一键触发包构建、上传到对应仓库的全流程
全流程集成类工具(能力直接对标 spotless-changelog)
- Commitizen(commitizen-tools 实现版本)
这是目前 Python 生态体验最接近 spotless-changelog 的工具,原生适配 Keep a Changelog 规范,开箱可用:- 内置变更日志管理命令,可自动生成、更新、校验 CHANGELOG 格式,不符合规范的内容会直接拦截
- 内置版本升级命令,可基于 CHANGELOG 记录或约定式提交内容自动计算语义化版本号,自动更新所有配置文件中的版本字段,自动生成版本提交、打 Git 标签
- 支持自定义命令钩子,可直接对接 pip、conda 的构建、上传命令,单条命令即可完成从版本校验到 PyPI、Anaconda 仓库发布的全流程
- 对 poetry、pdm、setuptools 等所有主流 Python 构建后端都有原生适配,不需要额外写适配脚本
- python-semantic-release
从 Node 生态 semantic-release 移植的 Python 原生实现,全流程自动化覆盖度非常高:- 支持配置 Keep a Changelog 作为变更日志的生成、校验规则
- 可自动基于提交记录、CHANGELOG 内容判断版本升级类型,同步所有位置的版本号
- 支持自动生成 Git 标签、创建代码托管平台的 Release 页面,自动触发 pip、conda 包的构建和上传流程
- 配置完成后可实现完全零手动干预的发版流程,只要按规范合入代码,工具会自动判断是否需要发版、对应发什么版本
轻量组合方案(适合不需要全量自动化的场景)
如果你只需要核心的变更日志校验+版本同步能力,不需要全自动发布,可以用两个成熟工具轻量组合,比从零写自定义脚本的成本低很多:
- 用
keepachangelog库完成 CHANGELOG 格式校验、已发布版本内容解析 - 搭配
bump2version工具完成多文件版本号同步、Git 标签生成
两个工具都支持命令行直接调用,只需要在 CI 配置里写3-5行串行命令即可完成流程串联,维护成本极低。
关于 poetry 的补充说明
poetry 本身定位是依赖管理+构建工具,并不内置变更日志管理、版本自动推导的能力,但它和上面提到的两款全流程集成工具都有原生适配,只需要在工具配置里指定构建后端为 poetry 即可,不需要额外写对接脚本。
内容的提问来源于stack exchange,提问作者Georg Heiler
相关产品推荐
相关产品推荐

