【问题标题】:Jenkins not running any jobs詹金斯没有运行任何工作
【发布时间】:2022-01-06 05:44:20
【问题描述】:

我在尝试解决其他一些问题的同时设法破坏了 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 升级到了最新的可用版本,并且还更新了大部分插件。我还尝试通过 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)

这看起来类似于第一个异常,它无法识别 Integer 字段。如何修复此配置?

它是如何开始的 我有几个预定的作业运行得很好。但突然之间,经过数周的成功运行,他们开始无缘无故地失败。但他们仍然跑到某个点。我还安装了一个名为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)`

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    终于设法解决了这两个问题。

    发生了什么? 安装插件build-monitor-plugin,重新启动 Jenkins,然后卸载插件的顺序使 Jenkins 中的一些文件处于损坏状态。 Jenkins 版本 2.263.3 无法从中恢复的状态,即使它继续重新创建文件但每次它再次创建相同的损坏文件时。

    文件损坏 有两个文件被损坏,并且都被命名为config.xml。第一个位于 Jenkins 的最顶层目录中。如果您有environment variables,它应该如下所示:

      <globalNodeProperties>
        <hudson.slaves.EnvironmentVariablesNodeProperty>
          <envVars serialization="custom">
            <unserializable-parents/>
            <tree-map>
              <default>
                <comparator class="java.lang.String$CaseInsensitiveComparator"/>
              </default>
              <int>2</int> <!-- This number indicates how many key/value pairs will follow it -->
              <string></string>
              <string></string>
              ...
            </tree-map>
          </envVars>
        </hudson.slaves.EnvironmentVariablesNodeProperty>
      </globalNodeProperties>
    

    Jenkins - Problem: hudson.model.Queue$MaintainTask failed 中也提出了类似的建议,但那里提到的 &lt;comparator&gt; 类的值不起作用。我通过安装一个单独的 Jenkins 实例并将新的 config.xml 与旧的进行比较,找出了正确的值。

    同样,另一个被破坏的config.xml 是用于未正确显示的文件夹,正如可以看到的那样。为此,我创建了另一个文件夹并将其 config.xml 与损坏的文件夹进行比较,发现&lt;folderViews&gt; 中缺少以下两行:

      ...
      <folderViews>
        ...
        <primaryView>All</primaryView>
        <tabBar class="hudson.views.DefaultViewsTabBar"/>
      </folderViews>
      ...
    

    添加这两行解决了这个问题。

    【讨论】:

      【解决方案2】:

      捎带这个答案,因为我们刚刚弹出了一个非常相似的错误,我们也安装了build-monitor-plugin 插件:

      java.lang.NullPointerException
          at java.util.TreeMap.putAll(Unknown Source)
          at hudson.slaves.EnvironmentVariablesNodeProperty.buildEnvVars(EnvironmentVariablesNodeProperty.java:85)
          at hudson.model.Computer.buildEnvironment(Computer.java:1210)
          at hudson.model.Job.getEnvironment(Job.java:385)
          at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:334)
          at hudson.model.Run.getEnvironment(Run.java:2419)
          at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:943)
          at CUSTOM_PLUGIN
      

      我立即认为我们的自定义插件是罪魁祸首,但恢复到以前的稳定版本并没有改变这种行为。然后,找到@Syed Ali 的答案,我查看了我们的config.xml 文件,但它们看起来还不错。

      问题是,在管理部分的配置中,环境变量部分的复选框被选中,但没有添加键值对。出于某种原因,取消选中该选项可以解决任何相关问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多