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

Continuous integration 当工件不存在时,Jenkins构建失败,continuous-integration,hudson,jenkins,artifacts,Continuous Integration,Hudson,Jenkins,Artifacts,我使用Jenkins在web应用程序上运行一些集成测试(使用cucumber、capybara和selenium) 每次测试失败时,都会保存一个屏幕截图、HTML源代码和过程视频 路径结构如下所示: results/output/<test_name>/<files> 结果/输出// 我使用Jenkins的归档工件特性来提供文件(模式:results/output/*/*)。它工作得很好 但是,一旦构建成功,就没有屏幕截图/视频等。。。构建失败,因为Jenkins找不

我使用Jenkins在web应用程序上运行一些集成测试(使用cucumber、capybara和selenium)

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

路径结构如下所示:

results/output/<test_name>/<files>
结果/输出//
我使用Jenkins的归档工件特性来提供文件(模式:
results/output/*/*
)。它工作得很好

但是,一旦构建成功,就没有屏幕截图/视频等。。。构建失败,因为Jenkins找不到模式的文件

有没有一种方法可以让詹金斯在没有文件的情况下成功?


我不想做一个涉及创建一个空文件夹结构(如result/output/success/hooray.txt)的肮脏的黑客行为。

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

1) 在构建步骤中添加了一个命令,该命令在没有文件存在的情况下创建虚假临时文件

在本例中,它旨在收集一个output.pdf文件,该文件将在测试失败时生成。我添加了一个构建步骤,如果该文件不存在,我们将创建一个“missing.pdf”文件。然后,我从给定目录中收集的工件是“*.pdf”。这似乎效果不错

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

我们在这里所做的就是这样做,构建步骤总是在目标区域创建一个空文件。这样的话,地球仪总是匹配一些东西


这些是我们迄今为止找到的最好的解决办法。如果你能找到更好的,我很想听听。

这方面还有一个悬而未决的问题:


该行为由系统属性hudson.tasks.ArtifactArchiver.warnOnEmpty控制,如

所述,我添加了一个步骤,在构建+1后文件夹为空时创建了success.txt,我认为这是正确的答案。(如果其他人想知道如何让Jenkins在Debian/Ubuntu上运行,请编辑
/etc/default/Jenkins
,并将
-Dhudson.tasks.ArtifactArchiver.warnOnEmpty=true
放入JAVA参数(或者可能是Jenkins\u JAVA\u选项).JENKINS_ARGS将不起作用,至少如果您有多个一维属性!但是,正如您链接到的问题中有人评论的那样,遗憾的是无法在JENKINS UI中为每个作业配置复选框。问得好;我想知道完全相同的事情!