jenkins安装插件后重启失败

jenkins手动上传安装插件后重启失败,报如下错误:

com.thoughtworks.xstream.mapper.CannotResolveClassException: com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy
	at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:81)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:71)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at hudson.util.XStream2$CompatibilityMapper.realClass(XStream2.java:411)
	at hudson.util.xstream.MapperDelegate.realClass(MapperDelegate.java:46)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47)
	at hudson.util.RobustReflectionConverter.determineType(RobustReflectionConverter.java:523)
	at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:348)
Caused: jenkins.util.xstream.CriticalXStreamException: 
---- Debugging information ----
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:383)
	at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:291)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74)
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52)
	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1421)
	at hudson.util.XStream2.unmarshal(XStream2.java:189)
	at hudson.util.XStream2.unmarshal(XStream2.java:160)
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1399)
	at hudson.XmlFile.unmarshal(XmlFile.java:196)
Caused: java.io.IOException: Unable to read /var/jenkins_home/config.xml
	at hudson.XmlFile.unmarshal(XmlFile.java:199)
	at hudson.XmlFile.unmarshal(XmlFile.java:179)
	at jenkins.model.Jenkins.loadConfig(Jenkins.java:3298)
	at jenkins.model.Jenkins$12.run(Jenkins.java:3400)
	at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:177)
	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:305)
	at jenkins.model.Jenkins$5.runTask(Jenkins.java:1160)
	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:221)
	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:70)
	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:829)
Caused: org.jvnet.hudson.reactor.ReactorException
	at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:290)
	at jenkins.InitReactorRunner.run(InitReactorRunner.java:49)
	at jenkins.model.Jenkins.executeReactor(Jenkins.java:1195)
	at jenkins.model.Jenkins.<init>(Jenkins.java:985)
	at hudson.model.Hudson.<init>(Hudson.java:86)
	at hudson.model.Hudson.<init>(Hudson.java:82)
	at hudson.WebAppMain$3.run(WebAppMain.java:247)
Caused: hudson.util.HudsonFailedToLoad
	at hudson.WebAppMain$3.run(WebAppMain.java:264)

通过日志可以看到是因为解析config.xml 文件:Unable to read /var/jenkins_home/config.xml 没有RoleBasedAuthorizationStrategy类:
com.thoughtworks.xstream.mapper.CannotResolveClassException: com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy

估计是安装插件出问题了,找到config.xml文件,我是使用docker部署的,将jenkins容器内的config.xml文件复制出来:

$ docker cp config.xml jenkins:/var/jenkins_home/config.xml

打开config.xml文件:

<?xml version='1.1' encoding='UTF-8'?>
<hudson>
  <disabledAdministrativeMonitors>
    <string>OldData</string>
    <string>jenkins.security.QueueItemAuthenticatorMonitor</string>
  </disabledAdministrativeMonitors>
  <version>2.414.1</version>
  <numExecutors>1</numExecutors>
  <mode>NORMAL</mode>
  <useSecurity>true</useSecurity>
  <authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">
    <roleMap type="slaveRoles">
      <role name="admin" pattern=".*">
        <permissions>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update</permission>
          <permission>hudson.model.Computer.Connect</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains</permission>
          <permission>hudson.model.Computer.Provision</permission>
          <permission>hudson.model.Computer.Build</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.View</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View</permission>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create</permission>
          <permission>hudson.model.Computer.Delete</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.Unlock</permission>
          <permission>hudson.model.Computer.Disconnect</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.Reserve</permission>
        </permissions>
        <assignedSIDs>
          <sid>admin</sid>
        </assignedSIDs>
      </role>
      <role name="开发代理机" pattern="RF-.*">
        <permissions>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>hudson.model.Computer.Build</permission>
        </permissions>
        <assignedSIDs>
          <sid>developer1</sid>
        </assignedSIDs>
      </role>
      <role name="测试代理机" pattern=".*">
        <permissions>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>hudson.model.Computer.Build</permission>
        </permissions>
        <assignedSIDs>
          <sid>tester1</sid>
        </assignedSIDs>
      </role>
    </roleMap>
    <roleMap type="projectRoles">
      <role name="admin" pattern=".*">
        <permissions>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update</permission>
          <permission>hudson.model.Item.Create</permission>
          <permission>hudson.model.Run.Delete</permission>
          <permission>hudson.model.Item.Workspace</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains</permission>
          <permission>hudson.model.Run.Replay</permission>
          <permission>hudson.model.Item.Configure</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.View</permission>
          <permission>hudson.model.Item.Cancel</permission>
          <permission>hudson.model.Item.Delete</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.Unlock</permission>
          <permission>hudson.scm.SCM.Tag</permission>
          <permission>hudson.model.Item.Move</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.Reserve</permission>
          <permission>hudson.model.Item.Discover</permission>
          <permission>hudson.model.Run.Update</permission>
        </permissions>
        <assignedSIDs>
          <sid>admin</sid>
        </assignedSIDs>
      </role>
      <role name="开发项目" pattern="RF-.*">
        <permissions>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
        </permissions>
        <assignedSIDs>
          <sid>developer1</sid>
        </assignedSIDs>
      </role>
      <role name="测试项目" pattern=".*">
        <permissions>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
        </permissions>
        <assignedSIDs>
          <sid>anonymous</sid>
          <sid>tester1</sid>
        </assignedSIDs>
      </role>
    </roleMap>
    <roleMap type="globalRoles">
      <role name="admin" pattern=".*">
        <permissions>
          <permission>hudson.model.View.Delete</permission>
          <permission>hudson.model.Computer.Connect</permission>
          <permission>hudson.model.Run.Delete</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains</permission>
          <permission>hudson.model.Computer.Create</permission>
          <permission>hudson.model.View.Configure</permission>
          <permission>hudson.model.Computer.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
          <permission>hudson.model.Hudson.Administer</permission>
          <permission>hudson.model.Item.Cancel</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View</permission>
          <permission>hudson.model.Computer.Delete</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.Unlock</permission>
          <permission>hudson.scm.SCM.Tag</permission>
          <permission>hudson.model.Item.Move</permission>
          <permission>hudson.model.Item.Discover</permission>
          <permission>hudson.model.Hudson.Read</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update</permission>
          <permission>hudson.model.Item.Create</permission>
          <permission>hudson.model.Item.Workspace</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete</permission>
          <permission>hudson.model.Computer.Provision</permission>
          <permission>hudson.model.Run.Replay</permission>
          <permission>hudson.model.View.Read</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.View</permission>
          <permission>hudson.model.View.Create</permission>
          <permission>hudson.model.Item.Delete</permission>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create</permission>
          <permission>hudson.model.Computer.Disconnect</permission>
          <permission>org.jenkins.plugins.lockableresources.LockableResourcesManager.Reserve</permission>
          <permission>hudson.model.Run.Update</permission>
        </permissions>
        <assignedSIDs>
          <sid>admin</sid>
        </assignedSIDs>
      </role>
      <role name="developer" pattern=".*">
        <permissions>
          <permission>hudson.model.Hudson.Read</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Computer.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
        </permissions>
        <assignedSIDs>
          <sid>developer1</sid>
        </assignedSIDs>
      </role>
      <role name="tester" pattern=".*">
        <permissions>
          <permission>hudson.model.Hudson.Read</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Computer.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
        </permissions>
        <assignedSIDs>
          <sid>anonymous</sid>
          <sid>tester1</sid>
        </assignedSIDs>
      </role>
    </roleMap>
  </authorizationStrategy>
  <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>true</disableSignup>
    <enableCaptcha>false</enableCaptcha>
  </securityRealm>
  <disableRememberMe>false</disableRememberMe>
  <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
  <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>
  <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
  <markupFormatter class="hudson.markup.EscapedMarkupFormatter"/>
  <jdks/>
  <viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
  <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
  <clouds/>
  <quietPeriod>5</quietPeriod>
  <scmCheckoutRetryCount>0</scmCheckoutRetryCount>
  <views>
    <hudson.model.AllView>
      <owner class="hudson" reference="../../.."/>
      <name>all</name>
      <filterExecutors>false</filterExecutors>
      <filterQueue>false</filterQueue>
      <properties class="hudson.model.View$PropertyList"/>
    </hudson.model.AllView>
    <listView>
      <owner class="hudson" reference="../../.."/>
      <name>demo</name>
      <filterExecutors>false</filterExecutors>
      <filterQueue>false</filterQueue>
      <properties class="hudson.model.View$PropertyList"/>
      <jobNames>
        <comparator class="java.lang.String$CaseInsensitiveComparator"/>
        <string>demo</string>
        <string>first_test</string>
        <string>Interface_test</string>
        <string>pipeline_demo</string>
        <string>pipeline_scm</string>
        <string>RF-Demo</string>
        <string>RF-Pipeline-Demo</string>
        <string>second_test</string>
        <string>selenium_pytest_demo</string>
        <string>selenium_pytest_demo2</string>
        <string>test</string>
        <string>testplatform_demo</string>
        <string>Windows-Shell-Demo</string>
      </jobNames>
      <jobFilters/>
      <columns>
        <hudson.views.StatusColumn/>
        <hudson.views.WeatherColumn/>
        <hudson.views.JobColumn/>
        <hudson.views.LastSuccessColumn/>
        <hudson.views.LastFailureColumn/>
        <hudson.views.LastDurationColumn/>
        <hudson.views.BuildButtonColumn/>
        <hudson.plugins.robot.view.RobotListViewColumn plugin="robot@3.0.1"/>
        <hudson.plugins.favorite.column.FavoriteColumn plugin="favorite@2.4.1"/>
      </columns>
      <recurse>false</recurse>
    </listView>
    <listView>
      <owner class="hudson" reference="../../.."/>
      <name>pipeline</name>
      <filterExecutors>false</filterExecutors>
      <filterQueue>false</filterQueue>
      <properties class="hudson.model.View$PropertyList"/>
      <jobNames>
        <comparator class="java.lang.String$CaseInsensitiveComparator" reference="../../../listView/jobNames/comparator"/>
        <string>global_varible_currentbuild_demo</string>
        <string>global_varible_env_demo</string>
        <string>global_varible_manager_demo</string>
        <string>global_varible_params_demo</string>
        <string>jenkinsfile_demo</string>
        <string>jenkinsfile_demo1</string>
        <string>jenkinsfile_demo2</string>
        <string>paral_test</string>
        <string>pipeline-lib-demo</string>
        <string>pipeline_demo</string>
        <string>pipeline_scm</string>
        <string>RF-Pipeline-Demo</string>
      </jobNames>
      <jobFilters/>
      <columns>
        <hudson.views.StatusColumn/>
        <hudson.views.WeatherColumn/>
        <hudson.views.JobColumn/>
        <hudson.views.LastSuccessColumn/>
        <hudson.views.LastFailureColumn/>
        <hudson.views.LastDurationColumn/>
        <hudson.views.BuildButtonColumn/>
        <hudson.plugins.robot.view.RobotListViewColumn plugin="robot@3.0.1"/>
        <hudson.plugins.favorite.column.FavoriteColumn plugin="favorite@2.4.1"/>
      </columns>
      <recurse>false</recurse>
    </listView>
    <listView>
      <owner class="hudson" reference="../../.."/>
      <name>RF</name>
      <filterExecutors>false</filterExecutors>
      <filterQueue>false</filterQueue>
      <properties class="hudson.model.View$PropertyList"/>
      <jobNames>
        <comparator class="java.lang.String$CaseInsensitiveComparator" reference="../../../listView/jobNames/comparator"/>
        <string>RF-TMVariables-demo</string>
      </jobNames>
      <jobFilters/>
      <columns>
        <hudson.views.StatusColumn/>
        <hudson.views.WeatherColumn/>
        <hudson.views.JobColumn/>
        <hudson.views.LastSuccessColumn/>
        <hudson.views.LastFailureColumn/>
        <hudson.views.LastDurationColumn/>
        <hudson.views.BuildButtonColumn/>
        <hudson.plugins.robot.view.RobotListViewColumn plugin="robot@3.0.1"/>
        <hudson.plugins.favorite.column.FavoriteColumn plugin="favorite@2.4.1"/>
      </columns>
      <recurse>false</recurse>
    </listView>
  </views>
  <primaryView>all</primaryView>
  <slaveAgentPort>50000</slaveAgentPort>
  <label>Built-In</label>
  <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
    <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb>
  </crumbIssuer>
  <nodeProperties/>
  <globalNodeProperties>
    <hudson.slaves.EnvironmentVariablesNodeProperty>
      <envVars serialization="custom">
        <unserializable-parents/>
        <tree-map>
          <default>
            <comparator class="java.lang.String$CaseInsensitiveComparator" reference="../../../../../../views/listView/jobNames/comparator"/>
          </default>
          <int>1</int>
          <string>LANG</string>
          <string>zh_CN.UTF-8</string>
        </tree-map>
      </envVars>
    </hudson.slaves.EnvironmentVariablesNodeProperty>
  </globalNodeProperties>
  <nodeRenameMigrationNeeded>false</nodeRenameMigrationNeeded>
</hudson>

<authorizationStrategy>...</authorizationStrategy>这部分内容删除,然后复制到jenkins容器内:

$ docker cp config.xml jenkins:/var/jenkins_home/config.xml

然后重启jenkins(docker restart jenkins)就解决了。

### 解决Docker容器内Jenkins插件安装失败的方法 当在Docker环境中运行Jenkins并尝试安装插件时,可能会遇到各种问题。以下是几种常见的解决方案: #### 1. 网络连接问题排查 如果插件无法下载,可能是由于网络配置不当造成的。确保宿主机和Docker容器都能正常访问互联网,并且能够解析外部域名。 对于某些企业环境中的代理服务器设置,可以在启动Jenkins Docker容器时通过`JAVA_OPTS`传递HTTP/HTTPS代理参数[^2]: ```bash docker run \ -e JAVA_OPTS="-Dhttp.proxyHost=proxy.example.com -Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080" \ jenkins/jenkins:lts ``` #### 2. 插件缓存清理 有时旧版本的插件残留可能导致新版本安装失败。可以考虑清除已有的插件缓存后再重试安装操作。这通常涉及到删除位于`$JENKINS_HOME/plugins`下的相应文件夹以及重启服务来触发重新同步过程。 #### 3. 更新Jenkins核心及其依赖库 保持Jenkins本身处于最新状态有助于减少因兼容性引发的问题。定期检查官方发布的更新日志,按照指引升级到稳定版次。同时也要注意所使用的其他组件(如操作系统、数据库驱动程序等)是否也需要同步调整以匹配新的API变更或安全补丁要求。 #### 4. 自定义初始化脚本 针对复杂场景下频繁变动的需求,建议采用预置好的自定义镜像策略。编写专门用于准备工作的Shell脚本来处理必要的前置任务,例如提前加载所需的全部扩展包至本地存储位置;或者借助于官方提供的命令行工具`jenkins-plugin-cli`来进行批量导入导出作业: ```bash #!/bin/bash # 下载所需插件清单 wget https://example.com/plugin-list.txt # 执行CLI指令完成离线模式下的快速部署 java -jar /usr/share/jenkins/ref/jenkins.war --plugin-download-directory=/var/cache/jenkins/war/WEB-INF/plugins plugin-list.txt ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值