当工件不存在时,Jenkins构建失败

时间:2011-12-23 14:11:26

标签: continuous-integration hudson jenkins artifacts

我使用Jenkins在web appilcation上运行一些集成测试(使用黄瓜,水豚和硒)

每次测试失败时,屏幕截图,HTML源代码和流程视频都会保存。

路径结构如下所示:

results/output/<test_name>/<files>

我使用Jenkins的归档工件功能来提供文件(模式:results/output/*/*)。它很棒。

然而,只要构建成功,就没有屏幕截图/视频等......并且构建失败,因为Jenkins无法找到该模式的文件。

有没有办法告诉詹金斯没有文件存在就能成功?

我不想做一个涉及创建像result / output / success / hooray.txt这样的空文件夹结构的脏黑客。

2 个答案:

答案 0 :(得分:13)

有一个未解决的问题:https://issues.jenkins-ci.org/browse/JENKINS-10502

行为由系统属性hudson.tasks.ArtifactArchiver.warnOnEmpty控制,如https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties

所述

答案 1 :(得分:4)

我在几个项目中遇到了类似的问题。我们有两种不同的解决方法(在两个不同的版本中)。

1)在构建步骤中添加了一个命令,如果没有文件已经存在,则会创建一个伪造的临时文件。

在这种情况下,它意味着收集一个output.pdf文件,如果测试失败将生成该文件。我添加了一个构建步骤,如果该文件不存在,我们创建了一个“missing.pdf”文件。然后我收集的工件是来自给定目录的'* .pdf'。这似乎很好。

2)在另一个版本中,我们需要使用glob收集一组文件。

我们在这里所做的是为了使构建步骤始终在目标区域中创建一个空文件。这样,glob总能匹配。

这是我们迄今为止找到的最佳解决方案。如果你找到更好的东西,我很乐意听到它。