8

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

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

有没有办法做到这一点?

4

4 回答 4

5

有一个名为Deploy artifacts to Maven repository的构建后选项。如果你不选择Deploy 即使构建是不稳定的,那意味着如果测试失败,它不会部署任何东西。与-fae命令中的一起,事情应该以您想要的方式工作

于 2011-03-17T16:41:45.823 回答
2

也许您可以尝试使用mvn -fae选项与您在 hudson 上的工作 - 它只会在完全构建后使 maven 失败

于 2011-03-09T22:39:45.730 回答
1

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

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

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

于 2011-03-15T20:14:14.103 回答
1

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

于 2011-03-16T15:22:52.743 回答