我已经设法打破Jenkins,同时试图解决一些其他问题。现在,每当我运行一个作业时,它都会立即失败,并出现以下错误:
java.lang.NullPointerException
at java.util.TreeMap.putAll(TreeMap.java:313)
at hudson.slaves.EnvironmentVariablesNodeProperty.buildEnvVars(EnvironmentVariablesNodeProperty.java:85)
at hudson.model.Computer.buildEnvironment(Computer.java:1195)
at hudson.model.Job.getEnvironment(Job.java:385)
at hudson.model.Run.getEnvironment(Run.java:2419)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.getEnvironment(WorkflowRun.java:500)
at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:112)
at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:68)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:310)
at hudson.model.ResourceController.execute(ResourceController.java:99)
at hudson.model.Executor.run(Executor.java:432)
Finished: FAILURE
我找到了这个答案Jenkins - Problem: hudson.model.Queue$MaintainTask failed,但它建议重写config.xml
文件。当我这样做并从磁盘重新加载配置时,config.xml
文件被jenkins覆盖。我已经将jenkins升级到了最新的可用版本,也更新了大部分的插件。我还尝试通过UI添加回环境变量,但这样做会引发以下异常:
2022-01-06 17:21:50.894+0000 [id=10] WARNING o.e.j.s.h.ContextHandler$Context#log: Error while serving https://<jenkins-url>:<port>/configSubmit
java.lang.ClassCastException: java.lang.Integer cannot be cast to hudson.model.Describable
at hudson.util.DescribableList.get(DescribableList.java:126)
at hudson.util.DescribableList.rebuild(DescribableList.java:168)
at jenkins.model.GlobalNodePropertiesConfiguration.configure(GlobalNodePropertiesConfiguration.java:25)
at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:3846)
at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:3810)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
Caused: java.lang.reflect.InvocationTargetException
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:400)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
at org.kohsuke.stapler.SelectionInterceptedFunction$Adapter.invoke(SelectionInterceptedFunction.java:36)
这看起来类似于第一个异常,其中它无法识别整数字段。如何修复此配置?
它是如何开始的我有几个计划的作业运行得很好。但在成功运行数周后,他们突然开始失败,没有任何明显的原因。但他们仍然在向某个点奔跑。我还安装了一个名为build-monitor-plugin
的插件,但安装后我没有重新启动jenkins。我决定重新启动jenkins,看看是否能解决这个问题,但这让我陷入了一系列不同的问题,我从来没有弄清楚为什么这些作业在成功运行了几个星期后开始失败。为了找到答案,我必须首先解决NPE问题(我在开始时描述过)。包含我所有作业的文件夹现在显示一个破碎的视图:
但是,我仍然可以使用直接的URL访问这些工作。这个文件夹有一个视图添加到它使用build-monitor-plugin
,我怀疑它搞砸了一些东西后,重新启动。所以我卸载了插件,但这并没有修复视图。我也手动删除了与此插件相关的所有文件,但这也没有帮助。当我访问该文件夹时,我在日志中看到以下错误:
2022-01-06 05:29:47.232+0000 [id=87] WARNING h.i.i.InstallUncaughtExceptionHandler#handleException: Caught unhandled exception with ID cb5bdf8c-2a97-4360-8f80-95df2c5c719b
org.apache.commons.jelly.JellyTagException: jar:file:/app/jenkins/war/WEB-INF/lib/jenkins-core-2.319.1.jar!/hudson/model/View/index.jelly:42:43: <st:include> org.apache.commons.jelly.JellyTagException: jar:file:/app/jenkins/war/WEB-INF/lib/jenkins-core-2.319.1.jar!/lib/hudson/projectView.jelly:67:24: <d:invokeBody> `java.lang.NullPointerException
at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:726)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:281)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)`
3条答案
按热度按时间9rnv2umw1#
终于解决了这两个问题。
发生了什么事?**安装插件
build-monitor-plugin
,重新启动Jenkins,然后卸载插件的顺序使Jenkins中的一些文件处于损坏状态。Jenkins版本2.263.3
无法恢复的状态,即使它继续重新创建文件,但每次都再次创建相同的损坏文件。已损坏的文件有两个文件已损坏,并且都命名为
config.xml
。第一个在Jenkins的最顶层目录中。如果你有environment variables
,它应该如下所示:在Jenkins - Problem: hudson.model.Queue$MaintainTask failed中也提出了类似的建议,但其中提到的
<comparator>
类的值不起作用。我通过安装一个单独的Jenkins示例并比较新的config.xml和旧的config.xml来找出正确的值。同样,另一个被打破的
config.xml
是为文件夹,这是不正确显示,因为可以看到的问题。为此,我创建了另一个文件夹,并将其config.xml与损坏的文件夹进行比较,发现<folderViews>
中缺少以下两行:添加这两行解决了问题。
ghg1uchk2#
这个答案是因为我们刚刚弹出了一个非常类似的错误,并且我们也安装了
build-monitor-plugin
插件:我马上想到我们的自定义插件是罪魁祸首,但恢复到以前的稳定版本并没有改变这种行为。然后,找到@Syed Ali的答案,我查看了我们的
config.xml
文件,但它们似乎很好。问题是,在管理部分的 Configuration 中,Environment Variables 部分的复选框被选中,但没有添加键值对。出于某种原因,取消选中该选项修复了任何相关问题。
eivnm1vs3#
我遇到了类似的问题,但对我来说,这是关于
config.xml
中的<nodeProperties>
节点。我在那里有一个空值(Jenkins插件中的一些bug可能设置了没有值的MAVEN_OPTS
)。如果我用空的<nodeProperties/>
替换它,我为我工作,但如果我需要设置一些东西,我必须手动删除它。