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
)就解决了。