我们使用我认为非常标准的maven-release-plugin开发风格。主分支包含我们下一个版本的开发(标记为x.y-SNAPSHOT的pom)。当我们进入代码冻结时,我们从master分支以准备发布。我们从这个分支执行发布,在这个分支上修复了任何错误。
现在提出我的问题。在准备x.y版本时,我们通常会对从此版本分支构建的x.y-SNAPSHOT进行测试。但是我们意识到,当测试“通过”时,它已经通过了带有SNAPSHOT标签的安装程序。因此,要执行发布,我们必须更改代码(删除SNAPSHOT标签)并重新旋转新版本。在我们看来,重新旋转构建只会使我们针对SNAPSHOT所做的任何测试失效 - 要求我们重新测试最终版本。
怎么办?
我正在考虑推荐我们只针对非SNAPSHOT版本执行正式测试。如果找到错误,在本质上是“候选版本”中,我们将它们修复在发布分支中并使版本为x.y.(z + 1),然后重新测试。缺点是,它不是干净的x.y.0版本,而是现在命名为x.y.z,其中z是此版本的候选版本。
任何人都有过这样的情景经验吗?这是一个正常的过程还是我们对测试SNAPSHOT的过度反应?
答案 0 :(得分:2)
通常有两种处理方式:
maven项目本身使用某些存储库管理器的Staging功能将工件保存在可以测试它们的暂存区域中。如果测试失败,则会删除暂存存储库,删除标记并重新发布版本
在其他情况下,视图是版本号很便宜(确保有无限供应),所以如果发布版本被禁止,只需重新填写下一个号码
第一个意味着您不需要跟踪哪些版本好/坏,但需要人们验证是否正在测试正确的工件。
第二个需要一些额外的工具来识别每个版本的状态,而不需要修改标签。
无论是作品,选择你的毒药; - )