Jenkins的自动升级之后无法服务
最近的Jenkins自动升级2.312以上的版本,貌似和Role-based Authorization插件不兼容!由于Authorization相关的部件会在Jenkins启动时加载,所以这个不兼容的问题会造成Jenkins无法启动,只会出一个报错的页面:
Error
java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded at jenkins.model.Jenkins.save(Jenkins.java:3475) at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3502) at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2701) at jenkins.model.Jenkins$15.run(Jenkins.java:3437) 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:1153) 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:68) 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:50) at jenkins.model.Jenkins.executeReactor(Jenkins.java:1186) at jenkins.model.Jenkins.<init>(Jenkins.java:978) at hudson.model.Hudson.<init>(Hudson.java:86) at hudson.model.Hudson.<init>(Hudson.java:82) at hudson.WebAppMain$3.run(WebAppMain.java:298) Caused: hudson.util.HudsonFailedToLoad at hudson.WebAppMain$3.run(WebAppMain.java:315)
发生这个问题后,由于web页面已经无法launch,只能登录到Jenkins的宿主机上,通过vi去修改Jenkins的config.xml文件。具体而言就是注释掉<authorizationStrategy>...</authorizationStrategy>之间的全部内容,并用下面的内容替代:
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>false</denyAnonymousReadAccess>
</authorizationStrategy>
意思就是取消所有的Authorization相关的配置,改成无需鉴权即可使用Jenkins的配置,即匿名用户即可使用Jenkins。
需要注意的是,做了如上改动之后需要重启Jenkins,而且重启的时候记得切换成Jenkins用户而非root用户。
评论
发表评论