在更新插件角色策略插件后,Jenkins无法工作。

11

我正在使用 jenkins 2.138.1 版本。我已经在“管理插件”部分更新了基于角色的策略插件,并尝试使用jenkinsurl/restart重新启动实例。 现在出现以下错误,没有登录界面可见:

com.thoughtworks.xstream.mapper.CannotResolveClassException: com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategyat com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:79)atcom.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:71)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at hudson.util.XStream2$CompatibilityMapper.realClass(XStream2.java:379)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at org.jenkinsci.jruby.JRubyMapper.realClass(JRubyMapper.java:34)
        at hudson.util.xstream.MapperDelegate.realClass(MapperDelegate.java:43)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
        at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:48)
        at hudson.util.RobustReflectionConverter.determineType(RobustReflectionConverter.java:461)
        at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:327)
    Caused: jenkins.util.xstream.CriticalXStreamException: com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy : com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy
    ---- Debugging information ----
    message             : com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy
    cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
    cause-message       : com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy
    class               : hudson.model.Hudson
    required-type       : hudson.model.Hudson
    converter-type      : hudson.util.RobustReflectionConverter
    path                : /hudson/authorizationStrategy
    line number         : 11
    version             : not available
    -------------------------------
        at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:356)
        at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
        at hudson.util.XStream2.unmarshal(XStream2.java:161)
        at hudson.util.XStream2.unmarshal(XStream2.java:132)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
        at hudson.XmlFile.unmarshal(XmlFile.java:178)
    Caused: java.io.IOException: Unable to read /var/lib/jenkins/config.xml
        at hudson.XmlFile.unmarshal(XmlFile.java:181)
        at hudson.XmlFile.unmarshal(XmlFile.java:161)
        at jenkins.model.Jenkins.loadConfig(Jenkins.java:3005)
        at jenkins.model.Jenkins.access$1300(Jenkins.java:304)
        at jenkins.model.Jenkins$13.run(Jenkins.java:3104)
        at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
        at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
        at jenkins.model.Jenkins$5.runTask(Jenkins.java:1066)
        at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
        at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    Caused: org.jvnet.hudson.reactor.ReactorException
        at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282)
        at jenkins.InitReactorRunner.run(InitReactorRunner.java:48)
        at jenkins.model.Jenkins.executeReactor(Jenkins.java:1100)
        at jenkins.model.Jenkins.<init>(Jenkins.java:904)
        at hudson.model.Hudson.<init>(Hudson.java:85)
        at hudson.model.Hudson.<init>(Hudson.java:81)
        at hudson.WebAppMain$3.run(WebAppMain.java:233)
    Caused: hudson.util.HudsonFailedToLoad
        at hudson.WebAppMain$3.run(WebAppMain.java:250)
4个回答

19

我曾经遇到同样的问题,通过以下方法解决:

关闭Jenkins的URL,这样可以使用它,但每个人都成为管理员。

备份config.xml文件,以便在更改时能恢复之前的内容。

$JENKINS_HOME/config.xml中注释或删除所有authorizationStrategy块,并将<useSecurity>true</useSecurity>更改为false。

启动Jenkins(它将正常启动,但没有身份验证)。

config.xml更改回之前的原始版本(包括先前运行的所有安全性),并按照原来的角色策略配置正常工作。


以下是重建配置文件的简单方法,先将原始文件移开: xq -x 'del(.hudson.authorizationStrategy)' /var/lib/jenkins/config_orig.xml > /var/lib/jenkins/config.xmlxq由jq提供并提供包装器。请参见: https://kislyuk.github.io/yq/#xml-support - Hugh Esco

2
今天我遇到了这个错误,我的情况是依赖关系的问题。 基于角色的授权策略 已经更新到 v3.0 版本,我使用Ansible jenkins_job模块 更新插件后重新启动Jenkins失败。 浏览器中的错误与服务器返回的错误类似:
2020-06-10 20:02:24.483+0000 [id=29]    SEVERE  jenkins.InitReactorRunner$1#onTaskFailed: Failed Loading plugin Role-based Authorization Strategy v3.0 (role-strategy)
java.io.IOException: Failed to load: Role-based Authorization Strategy (3.0)
 - Plugin is missing: extended-read-permission (3.2)
        at hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:933)
        at hudson.PluginManager$2$1$1.run(PluginManager.java:546)
        at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
        at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
        at jenkins.model.Jenkins$5.runTask(Jenkins.java:1133)
        at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
        at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
        at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

如您所见,有一个待处理的插件,似乎Ansible可以根据需要从依赖项更新插件,但无法安装更新的依赖项。

设置类似的解决方案后,备份config.xml,删除安全性,安装依赖项Extended Read Permission,然后恢复配置,我成功地恢复了服务。


0

我在我的Windows本地机器上运行Jenkins时遇到了相同的错误(rolestrategy.RoleBasedAuthorizationStrategy)我在这里遇到了相同的错误

  • 进入安装Jenkins的C驱动器上的Jenkins文件夹。

  • 尝试在本地机器中查找config.xml文件。

  • 它可能位于以下位置之一 "C:\Programfiles\Jenkins\.jenkins\config.xml" 或者 "C:\ProgramData\Jenkins\.jenkins\config.xml"

  • 请记住,.jenkins文件夹在Windows机器上默认为隐藏状态,因此首先取消隐藏所有文件夹,然后进入 "C:\Programfiles\Jenkins\" 或 "C:\ProgramData\Jenkins\"

  • 我相信您能够在上述路径中找到config.xml文件,或者直接在Windows上搜索config.xml文件。

  • 找到config.xml后,

  • 首先尝试备份config.xml文件,并将其粘贴到某个地方并妥善保管。

  • 关闭浏览器上的所有Jenkins URL (Localhost:8080)

  • 现在转到Windows > 在Windows上搜索"Services" > 请检查此图像

  • 搜索Jenkins,然后右键单击jenkins并单击STOP 请在此处检查图像

  • 现在转到config.xml,使用记事本打开,并注释/删除所有<authorizationStrategy>并将<useSecurity>true</useSecurity>更改为<useSecurity>false</useSecurity>

  • 保存config.xml文件

  • 再次转到Services搜索Jenkins启动服务

  • 转到浏览器并再次运行localhost:8080,它可以正常工作了

  • 启动Jenkins(它会正常启动但没有身份验证)。

将config.xml更改回之前的原始版本(包括以前运行的所有安全设置),并使用原始角色策略配置正常工作。

终于解决了 !!!!!!!!


感谢 AWS Linux DevOps 社区的每一个人。


-3

检查 /var/lib/jenkins 的所有权。

确保所有者为 jenkins。

chown -R jenkins:jenkins /var/lib/jenkins

这解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接