更新#1 9/18
我的公司已经决定完全修改他们的开发/发行周期,以适应越来越多的开发人员。
git过程将与成功分支模型类似,只需做一些更改。开发人员不需要直接推送到“developers”分支,而是需要发出合并/拉请求,需要代码评审和基本单元测试。
版本系统将是Major.Minor.Patch,主要版本标记向后兼容性中断,次要版本标记新特性和小错误修复,修补程序标记关键的热修复。这个新的版本系统将删除Jenkins的版本号作为有用的信息,但为了历史目的将其附加到已部署的工件上。
Jenkins将跟踪“developers”分支,以构建快照并将快照部署到本地Nexus,因此开发人员可以使用未发布但已被接受的特性。Jenkins还将跟踪“主”分支,以构建和部署发布构件。
释放过程将:
原始帖子
我试图构建一个混淆的JAR库,使用基于Jenkins/Hudson构建的动态版本号,并部署到内部Sonatype Nexus。
我的问题是Maven安装/部署不遵守对finalName的更改,使用如下表达式设置版本被认为是“错误的做法”:
<version>1.0.${buildNumber}</version>尽管这是一个糟糕的实践,但它正确地安装/部署带有适当版本的工件,包括本地版本和远程版本。版本号基于与Jenkins构建系统的build环境变量的存在相关的一对配置文件,如果没有该变量,默认为0:
<profile>
<id>static_build_number</id>
<activation>
<property>
<name>!env.BUILD_NUMBER</name>
</property>
</activation>
<properties>
<buildNumber>0</buildNumber>
</properties>
</profile>
<profile>
<id>dynamic_build_number</id>
<activation>
<property>
<name>env.BUILD_NUMBER</name>
</property>
</activation>
<properties>
<buildNumber>${env.BUILD_NUMBER}</buildNumber>
</properties>
</profile>我们不使用快照版本,因为提交并推送到Nexus的任何版本都被认为是经过测试的版本。
是否有一种基于Jenkins/Hudson动态版本号设置Maven版本的“适当”方法,允许使用该更新版本部署Maven版本?
发布于 2012-09-17 19:14:53
maven方法指出,只有当您发布代码时,版本才会发生更改,并且同一版本的两个连续构建应该产生相同的输出。
在你的例子中,你违背了这两个好的做法。
如果真正的每个提交都是一个新版本,那么您正在做的事情听起来并不严重错误(但对我来说确实很有趣)。一个缺点是,它看起来不像是从您的VCS中创建一个标记(这是另一个好的实践)。
老实说。我不敢相信每一次提交都是一个生产准备版。我从未见过这种情况,甚至在连续交付环境中,每个提交都需要通过大量的自动化测试,有时修订也会被拒绝(可能是因为功能或性能原因)。
https://stackoverflow.com/questions/12465096
复制相似问题