我解释提出了构建系统(摇篮/ Artifactory的/詹金斯/厨师),以我们的高级建筑师之一,他所提出的意见,我认为我的那种不同意,但我没有足够的经验,真正权衡上。
该项目构建了一个Java库(JAR)作为工件,供其他团队重用。对于版本控制,我想使用以下语义方法:
<major>.<minor>.<patch>
其中patch
指示错误/紧急修复,minor
指示向后兼容的发行版,并major
指示API的大规模重构和/或向后不兼容的更改。
就交付而言,这就是我想要的:开发人员提交一些代码;这将触发构建到QA / TEST环境。一些测试已经运行(一些自动化,一些手动)。如果所有测试均通过,则生产版本会将JAR发布到我们的内部仓库中。至此,应该正确地对JAR进行版本控制,我的想法是使用build.number
CI工具自动生成并提供的JAR 作为补丁号。
因此,版本控制实际上是:
<major>.<minor>.<build.number>
同样,build.number
CI工具在哪里提供。
架构师对此表示否认,称使用CI版本号是语义版本控制的“滥用”。
我的问题是:这是正确的吗?如果正确,为什么?如果没有,为什么不呢?