Maven 2 配置hudson maven作业以在出现测试失败时继续构建,但仅在没有测试失败时部署

Maven 2 配置hudson maven作业以在出现测试失败时继续构建,但仅在没有测试失败时部署,maven-2,maven,hudson,maven-3,jenkins,Maven 2,Maven,Hudson,Maven 3,Jenkins,我已经为我们的maven多项目创建了一个hudson作业,其中包含5个模块,用于将快照工件部署到maven存储库。这没关系,只要它在没有测试失败的情况下成功构建。但是,现在我想满足以下要求: 当一个模块测试失败时,构建应该继续构建并测试其他模块,但会变为黄色。使用-Dmaven.test.failure.ignore=true完成,但在下一个需求时失败 当模块出现测试失败时,不应将任何工件部署到maven存储库。其他项目依赖于此项目的快照,这些项目只希望使用没有任何失败测试的最新快照 最好使用

我已经为我们的maven多项目创建了一个hudson作业,其中包含5个模块,用于将
快照
工件部署到maven存储库。这没关系,只要它在没有测试失败的情况下成功构建。但是,现在我想满足以下要求:

  • 当一个模块测试失败时,构建应该继续构建并测试其他模块,但会变为黄色。使用
    -Dmaven.test.failure.ignore=true完成,但在下一个需求时失败
  • 当模块出现测试失败时,不应将任何工件部署到maven存储库。其他项目依赖于此项目的快照,这些项目只希望使用没有任何失败测试的最新快照
  • 最好使用hudson-maven集成,而不是免费的脚本,我们可以得到hudson报告页面(每个模块的红/黄/蓝状态,构建日志错误着色,…)。专门运行maven构建两次(第一次
    mvn test-Dmaven.test.failure.ignore=true
    ,而不是
    mvn deploy-DskipTests
    )并不是一个解决方案,因为这会导致性能损失,并且会混淆hudson报告页面,而且不是原子的(在第二次构建中会再次从存储库进行更新)

有什么方法可以做到这一点吗?

也许你可以尝试在哈德逊的作业中使用mvn-fae选项-这会使maven在完全构建之后失败

如果构建时间对你来说不是问题,我认为更好的选择是创建另一个作业,只是为了部署。大概是这样的:

  • 使用“mvn-fae clean install”配置原始作业(我们称之为“构建作业”)
  • 使用“mvn部署”创建一个新作业(“部署作业”),并且不为其配置任何构建触发器
  • 在“构建作业”中,启用“构建后操作”下的“构建其他项目”选项,并将其设置为运行“部署作业”

  • 也许您可以尝试将这两个作业配置为使用相同的工作区,从而在整个构建/部署过程中节省一些时间。

    如果您碰巧用作存储库管理器,则可以使用来部署您的工件。只有当Maven构建的所有模块的所有测试都通过时,此插件才会部署您的构件。

    有一个称为将构件部署到Maven存储库的构建后选项。如果即使构建不稳定也不选择部署,那么这意味着如果测试失败,它将不会部署任何东西。与命令中的
    -fae
    一起,事情应该以您想要的方式运行

    我认为-fae选项(最后失败)不会停止部署。但是它看起来比-Dmaven.test.failure.ignore=true更好,谢谢!通过使用免费脚本而不是maven集成,这可以在单个作业中完成,但具体来说,运行maven构建两次(第一次mvn测试-Dmaven.test.failure.ignore=true,而不是mvn部署-DskipTests)并不是一个解决方案,因为这会造成性能损失,并且会混淆hudson报告页,而且不是原子的(它在第二次构建中再次从存储库更新)。有趣的解决方案。虽然我们正在使用Nexus,但我会看看它们是否有类似的功能。陷阱:将工件部署到Maven存储库的选项在freestyle hudson作业中不可用,仅在maven2 hudson作业中可用(这显然对Maven3不起作用).到目前为止,maven2 hudson/jenkins构建确实支持maven3