【问题标题】:Testing SNAPSHOT's vs. release artifacts测试 SNAPSHOT 与发布工件
【发布时间】:2013-04-09 07:34:17
【问题描述】:

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

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

怎么办?

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

有没有人遇到过这样的场景?这是一个正常的过程还是我们对测试 SNAPSHOT 反应过度?

【问题讨论】:

    标签: maven testing release


    【解决方案1】:

    一般有两种处理方式:

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

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

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

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

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

    【讨论】:

    • 当心任何带有 (1) 的非分阶段部署 - 如果您需要任何类型的手动验证并且不能保证构建的工件保留在暂存区域中,您最终可能会得到两个相同的工件maven 版本,但在野外有不同的内容。哪个不好。
    • @ptyx 我想我解决了这个问题,如果没有暂存风险或跟踪好/坏版本号的方法,你不可能让每个版本都通过测试,例如,如果 2.4.5 是相同的风险糟糕的是 2.4.5 逃脱了您的跟踪系统。发现版本号可能比比较 sha1 更容易,或者它可能不会,因为无论如何您都应该检查下载的 sha1,并且您可能只会在运行安装程序之后看到版本号已经晚了。因此,每个都是毒药;-)
    猜你喜欢
    • 2016-09-30
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    相关资源
    最近更新 更多