首页 > 解决方案 > 为什么 Jenkins job-dsl 插件因错误而失败:java.io.IOException: Failed to persist config.xml

问题描述

我有一份 Jenkins Job DSL 工作,直到 1 月左右都运行良好(它不经常使用)。上周,作业失败并显示错误消息ERROR: java.io.IOException: Failed to persist config.xml(没有堆栈跟踪,只有该消息)。自 1 月份最后一次成功执行以来,该作业没有任何变化。

[...]
13:06:22 Processing provided DSL script
13:06:22 New run name is '#15 (Branch_B20_2_x)'
13:06:22 ERROR: java.io.IOException: Failed to persist config.xml
13:06:22 [WS-CLEANUP] Deleting project workspace...
13:06:22 [WS-CLEANUP] Deferred wipeout is used...
13:06:22 [WS-CLEANUP] done
13:06:22 Finished: FAILURE

我认为在 1 月和 2 月之间,可能某些插件已更新并且 DSL 脚本现在出错了,所以我将 DSL 脚本更改为我能想象到的最简单的脚本(来自 job-dsl 插件页面的示例):

job('example') {
  steps {
    shell('echo Hello World!')
  }
}

但这项工作仍然失败,并出现完全相同的错误。我检查了詹金斯日志,但没有看到。我在 docker swarm 容器中运行 jenkins,每个作业都使用 docker-swarm-plugin 在自己的构建代理容器中执行(也没有更改,在一月份工作)。docker 守护进程日志也没有显示错误。

jenkins 工作区的文件系统也未满,并且构建代理容器中的用户对 taht 文件系统具有写入权限。当我将空的 tmpfs 安装到工作区时,它甚至不起作用。

有谁知道出了什么问题,或者至少提示在哪里继续搜索该错误?

标签: dockerjenkinsjenkins-job-dsl

解决方案


通过将 jenkins 更新到 2.289 解决了问题

似乎之前的版本组合存在一些问题。如果接下来的一些更新有任何变化,我会及时通知您。


推荐阅读