4

我们使用我认为非常标准的 maven-release-plugin开发风格。master 分支包含我们下一个版本的开发(pom 标记为 xy-SNAPSHOT)。当我们进入代码冻结状态时,我们从 master 分支以准备发布。我们从这个分支执行发布,任何错误都在这个分支上修复。

现在我的问题。在准备 xy 版本时,我们通常针对 xy-SNAPSHOT 进行测试,从这个版本分支构建。但是我们意识到,当测试“通过”时,它已经通过了带有 SNAPSHOT 标签的安装程序。因此,要执行发布,我们必须更改代码(删除 SNAPSHOT 标签)并重新发布新版本。在我们看来,重新构建构建只会使我们针对 SNAPSHOT 所做的任何测试无效——要求我们重新测试最终版本。

该怎么办?

我正在考虑建议我们只针对非 SNAPSHOT 构建执行正式测试。如果在本质上是“候选版本”中发现错误,我们会在发布分支中修复它们并提升版本 xy(z+1),然后重新测试。不利的一面是,它现在命名为 xyz,而不是一个干净的 xy0 版本,其中 z 是此发布的候选版本的数量。

任何人都有这样的场景经验?这是一个正常的过程还是我们对测试 SNAPSHOT 反应过度?

4

1 回答 1

2

一般有两种处理方式:

  1. maven 项目本身使用一些存储库管理器的暂存功能将工件保存在可以测试它们的暂存区域中。如果测试失败,暂存存储库被删除,标签被删除,并且发布重新启动

  2. 在其他情况下,版本号很便宜(确保有无限供应),所以如果发布失败,只需重新旋转下一个数字

第一个意味着您不需要跟踪哪些版本是好/坏,但需要人们验证是否正在测试正确的工件。

第二个需要一些额外的工具来识别每个版本的状态,并且不需要修改标签。

要么工作,选择你的毒药;-)

于 2013-04-16T21:36:56.053 回答