我们使用的是我认为非常标准的
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的过度反应?
最佳答案 通常有两种处理方式:
> maven项目本身使用某些存储库管理器的Staging功能将工件保存在可以测试它们的暂存区域中.如果测试失败,则删除暂存存储库,删除标记,然后重新发布
>在其他情况下,视图是版本号很便宜(确保有无限供应),所以如果发布版本是borked,只需重新设置下一个数字
第一种方法意味着您不需要跟踪哪些版本好/坏,但需要人们验证是否正在测试正确的工件.
第二个需要一些额外的工具来识别每个版本的状态,而不需要修改标签.
无论是工作,挑选你的毒药;-)