在存储库中正确管理semver
semversioner的Python项目详细描述
semversioner
在项目中管理semantic versioning并自动生成changelog.md文件的最简单方法。
Semversioner将为库、Docker映像等提供自动化Semver发布过程的工具。
这个项目的灵感来自于aws管理其AWS-cli版本控制的方式。
语义版本控制
semantic versioning规范包含几个可能的变体,但为了简化,在semversioner中,我们使用三部分版本号:
<major>.<minor>.<patch>
按照以下准则构建:
- 中断向后兼容性或主要功能会使主要功能发生冲突(并重置次要功能和修补程序)。
- 在不破坏向后兼容性的情况下添加的新功能会影响次要功能(并重置修补程序)。
- 错误修复和其他更改会影响修补程序。
例如1.0.0
工作原理
在任何给定的时间,.changes/
目录看起来像:
.changes
└── next-release
├── minor-20181227010225.json
└── major-20181228010225.json
├── 1.1.0.json
├── 1.1.1.json
├── 1.1.2.json
发布过程接受next-release
中的所有内容,并将它们聚合在一个json文件中以用于该发布(例如1.12.0.json
)。这个
json文件是来自next-release
的所有单独json文件的列表。
安装
$ pip install semversioner
用法
碰撞版本
在本地环境中,您将使用cli创建与代码一起提交的不同变更集文件。例如:
$ semversioner add-change --type patch --description "Fix security vulnerability with authentication."
然后,在您的ci/cd工具中,您需要释放(自动生成版本号)并创建变更日志文件。
$ semversioner release
生成变更日志
作为CI/CD工作流的一部分,您将能够生成包含所有更改的更改日志文件。
$ semversioner changelog > CHANGELOG.md
贡献
许可证
版权所有(c)2019 Atlassian和其他。 apache 2.0许可,请参阅LICENSE.txt文件。
由Raul Gomis <https://twitter.com/rgomis>
用制成。