Maven和git流,候选版本的版本策略
我们正在尝试将git流模型应用于maven项目 我们使用Maven和git流,候选版本的版本策略,maven,version-control,pom.xml,git-flow,release-candidate,Maven,Version Control,Pom.xml,Git Flow,Release Candidate,我们正在尝试将git流模型应用于maven项目 我们使用develope和feature/XXX分支处理-SNAPSHOT版本化工件,这些工件部署在我们的DEV和TST环境中 当应用程序“就绪”时,我们有“发布候选”:代码被推送到发布分支上,我们编辑pom以更新版本(将-SNAPSHOT替换为-RC1),该版本被构建并存储在存储库管理器中,然后部署到UAT环境中 如果需要一些修复,我们将在同一发行版分支中创建其他-RCx版本,这些工件将归档在存储库管理器中,并部署在UATenv上。因此,我们可以
develope
和feature/XXX
分支处理-SNAPSHOT
版本化工件,这些工件部署在我们的DEV
和TST
环境中
当应用程序“就绪”时,我们有“发布候选”:代码被推送到发布
分支上,我们编辑pom以更新版本(将-SNAPSHOT
替换为-RC1
),该版本被构建并存储在存储库管理器中,然后部署到UAT
环境中
如果需要一些修复,我们将在同一发行版
分支中创建其他-RCx
版本,这些工件将归档在存储库管理器中,并部署在UAT
env上。因此,我们可以精确地跟踪不同版本中的错误修复
一旦批准了-RCx
版本,将发行版
分支推送到主版
,更新pom以删除-RCx
,在部署到产品
环境之前将其构建并存储在存储库管理器中
但是通过这种方式,部署在PROD
和UAT
中的二进制文件并不完全相同:由于
标记,两次战争中的POM是不同的。这并不是一个好的做法
如果我正确理解了git流模型,那么“最终”版本号(不带-RCx
)应该在发布
分支的创建时设置,并且在将该分支推送到主
之前,同一版本是“活动的”,对吗?在这种情况下:
- 我们丢失了在
中实际部署的应用程序版本的信息(因为我们丢失了UAT
标识符,我们可能不知道部署的版本是否包含最后的错误修复,或者它是否是部署的旧版本…)-RCx
- 在repository manager中,我们无法知道工件是从
分支还是从发行版
构建的,因为将主版
分支推入功能
时版本号不再发生变化主版
在git流模型中,您(或您会)如何使用Maven项目管理候选版本?我建议您在版本控制策略中添加修订号。当您启动发布分支时,修订号被设置为0,然后随着每次修复而递增。测试完成后,将验证测试的确切版本部署到生产环境中。这种方法为每个版本提供了可跟踪性,在不同的环境中保持版本的一致性,并且避免了仅仅围绕版本号进行形式化的新构建的需要。在测试环境中验证的完全相同的二进制文件可以部署到生产环境中 我已经在几个生产应用程序中使用了此策略,并且没有出现任何问题