在存储库中正确管理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

贡献

CONTRIBUTING.md

许可证

版权所有(c)2019 Atlassian和其他。 apache 2.0许可,请参阅LICENSE.txt文件。


Raul Gomis <https://twitter.com/rgomis>用制成。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ContentExchange设置请求属性   java Spark/Hdfs/Hdfsclient兼容性   java springcloudstreamkafka配置:instanceCount和instanceIndex   Java中web服务序列化日期   java用动态数据替换占位符   java git gc似乎覆盖了一个packfile,留下了一个打开的文件描述符,其中包含对“oldxxx.pack”的引用   为什么Apache项目对Java版本敏感?   java Anylogic帮助如何在导入的3dobject通过输送机上的多个“站”时更改其颜色?   JavaEclipseNeonM2E可以导入一个大型项目,但似乎不能自动解决依赖关系   java@FindBy搜索具有满足条件的子元素的元素   java如何将ActionEvent e与键绑定一起使用?   java转换以集中方式从外部库抛出的异常   java中用户文件/数据文件与系统/程序文件的区别   java使用变量字符串或字符作为对象名   字体使用Java图形操纵字符串中每个字符的形状   JavaFX图表移动数据   java RandomAccessFile:将所有项设置为相同的字节数?   java Google Play inapp Billing onPurchasesUpdated()错误响应代码1   java在不知道属性名和属性数的情况下处理json对象   java是否可以一次从HazelcastInstance(映射和列表)中删除所有数据?