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

时间:2011-03-04 16:02:17

标签: maven-2 maven hudson maven-3 jenkins

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

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

有没有办法实现这个目标?

4 个答案:

答案 0 :(得分:5)

有一个名为将部件工件部署到Maven存储库的后期构建选项。如果您没有选择 Deploy,即使构建不稳定,那么这意味着如果测试失败,它将不会部署任何内容。与命令中的-fae一起,事物应以您想要的方式工作

答案 1 :(得分:2)

也许您可以尝试在hudson上使用 mvn -fae 选项 - 只有在完全构建后才会使maven失败

答案 2 :(得分:1)

如果构建时间对您来说不是问题,我认为更好的选择是创建另一个作业,仅用于部署。像这样:

  1. 使用“mvn -fae clean install”配置您的原始作业(我们称之为“构建作业”)
  2. 使用“mvn deploy”创建新作业(“部署作业”),并且不为其配置任何构建触发器
  3. 在“构建作业”中,在构建后操作下启用构建其他项目选项,并将其设置为运行“部署作业”。
  4. 也许您可以尝试将两个作业配置为使用相同的工作区,从而在整个构建/部署过程中节省一些时间。

答案 3 :(得分:1)

如果您碰巧使用Artifactory作为存储库管理器,则可以使用Hudson/Jenkins Artifactory plugin来部署工件。如果所有测试都通过了Maven构建的所有模块,则此插件将仅部署您的工件。