docker - 为什么 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 安装到工作区时,它甚至不起作用。
有谁知道出了什么问题,或者至少提示在哪里继续搜索该错误?
- 詹金斯版本:2.281
- job-dsl 插件版本:1.77
- 码头工人版本:20.10.4
解决方案
通过将 jenkins 更新到 2.289 解决了问题
似乎之前的版本组合存在一些问题。如果接下来的一些更新有任何变化,我会及时通知您。
推荐阅读
- kubernetes - 如何编辑 Kubernetes 集群角色定义
- javascript - 如何将获取数据的结果分配给变量?ReactJS
- google-cloud-sql - Google Cloud SQL 实例卡在“实例正在更新”中
- c# - LINQ to Entities 无法识别该方法(布尔值)
- sql-server - 以月和日计算两个日期之间的时间段
- tfs - 需要一次将用户添加到所有团队项目
- reporting-services - SSRS 表达式 IIF 在 if true 部分带有聚合函数
- python-3.x - python:3.8-alpine3.11 中的 Scipy 错误 - 找不到 lapack/blas 资源
- r - R:通过在数据框中查找所有大于或小于同一列中另一个给定数字的数字来创建新列
- firebase - ionic 4如何在打印时获得正常大小的页面