【问题标题】:Jenkins Build fails when artifacts are not there当工件不存在时,Jenkins Build 失败
【发布时间】:2011-12-23 14:11:25
【问题描述】:

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

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

路径结构如下:

results/output/<test_name>/<files>

我使用 Jenkins 的存档工件功能来提供文件(模式:results/output/*/*)。效果很好。

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

有没有办法让 Jenkins 在没有文件的情况下成功?

我不想做一个肮脏的 hack,涉及创建一个空文件夹结构,如 result/output/success/hooray.txt。

【问题讨论】:

  • 好问题;我想知道完全相同的事情!

标签: continuous-integration hudson jenkins artifacts


【解决方案1】:

有一个未解决的问题: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,我认为这是正确的答案。 (如果其他人想知道如何让 Jenkins 在 Debian/Ubuntu 上运行,请编辑 /etc/default/jenkins 并将 -Dhudson.tasks.ArtifactArchiver.warnOnEmpty=true 放入 JAVA_ARGS (或者可能是 JENKINS_JAVA_OPTIONS)。JENKINS_ARGS 不起作用,在至少如果你有多个 -D 属性!
  • 尽管如此,当有人遇到您链接到的问题时,遗憾的是无法在 Jenkins UI 中针对每个作业使用复选框进行配置。
【解决方案2】:

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

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

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

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

我们在这里所做的就是让构建步骤始终在目标区域中创建一个空文件。这样,glob 总是匹配一些东西。

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

【讨论】:

  • 我添加了一个步骤,在构建后文件夹为空时创建了一个success.txt
猜你喜欢
  • 2012-06-11
  • 2017-03-04
  • 2019-10-12
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多