问题描述
正在为一个使用Maven和Artifactory进行构建的Java项目制定Git工作流程。在develop和feature/分支上,版本号包含“-SNAPSHOT”。但是在release/或master分支上,不希望有“-SNAPSHOT”。用户想知道何时(以及如何)去掉它。
用户提供了一个部分工作流程的示例,但是没有处理去掉“SNAPSHOT”的情况。
v1.0-snap v1.0-snapfeature/a * ---------> * ^ | | | | vdevelop * * v1.0-snap v1.0-snap | | v release/1.1 v1.0-snap * -----> * v1.1-snap
用户提供了两个选项,但都可能是错误的。
选项1
v1.0-snap v1.0-snapfeature/a * ---------> * ^ | | | | v v1.1-snapdevelop * * v1.0-snap * v1.0-snap | / | / v /release/1.1 v1.0-snap * -----> * v1.1-snap \ \ \master * --------> * v1.1-snap v1.1
选项2
v1.0-snap v1.0-snapfeature/a * ---------> * ^ | | | | v v1.1-snapdevelop * * v1.0-snap * v1.0-snap | / | / v /release/1.1 v1.0-snap * -----> * ----- >* v1.1 v1.1-snap \ \ \master * v1.1
这两个选项对我来说都有些奇怪。
是否有关于这种流程的最佳实践?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
最佳实践
根据用户提供的信息,以下是一个最佳实践的工作流程:
1. 在feature/*
和develop
分支上,使用类似18.08-SNAPSHOT
的版本号。
2. 当准备开始发布时,创建一个发布分支(例如release/18.08
),并将pom文件中的版本号更改为18.08
。
3. 同时,将develop分支的版本号升级为下一个开发版本,例如18.09-SNAPSHOT
。
4. 在此基础上,修复bug并完成发布,适当时将其合并到master
分支。
请注意,如果需要在Artifactory中生成唯一的构建版本,可以在构建时(对于发布分支)使用Jenkins将pom文件中的版本号更改为类似18.08-326
的形式(326是构建号)。这样做不会提交此更改,但构建并推送到Artifactory的构件将是唯一的(例如foobar-18.08-326.war
)。
这个工作流程可以帮助您在不同分支上管理版本号,并确保在发布时生成唯一的构建版本。
正文完