问题描述
在将Jenkins从2.120版本更新到2.122版本时,使用Jenkins自带的更新机制进行更新。在同一次更新中,用户还更新了一些插件。更新完成后,用户尝试重新启动Jenkins,但却遇到了以下错误:
jenkins.model.InvalidBuildsDir: /development/workspace/jenkins/${ITEM_FULL_NAME}/builds does not resolve to an absolute path at jenkins.model.Jenkins.checkRawBuildsDir(Jenkins.java:3060) at jenkins.model.Jenkins.loadConfig(Jenkins.java:3009)Caused: java.io.IOException at jenkins.model.Jenkins.loadConfig(Jenkins.java:3012) at jenkins.model.Jenkins.access$1200(Jenkins.java:304) at jenkins.model.Jenkins$14.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:1068) 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:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)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:1102) 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)
用户怀疑问题出在解析属性${ITEM_FULL_NAME}
上。但另一方面,用户还注意到报告的路径中缺少驱动器盘符(如D:
)。Jenkins实例是从相同的驱动器(D:
)运行的。
用户想知道如何跟踪问题并解决它。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据用户的描述,问题可能是由于在非C:\
驱动器上安装Jenkins更加困难导致的。由于Jenkins无法运行,您需要手动配置config.xml
文件。
以下是一个在stackoverflow.com上的帖子,可能会对您有所帮助。他们提到,您可能需要在config.xml
中找到Workspace Root Directory
并将其设置为D:\Jenkins\${ITEM_FULL_NAME}\workspace
,将Build Record Root Directory
设置为D:\Jenkins\${ITEM_FULL_NAME}\builds
(或根据您的环境设置相应的值)。
该帖子还提到了有用的bubble help
信息:
This value may include the following variables:
–${JENKINS_HOME}
— Jenkins主目录的绝对路径
–${ITEM_ROOTDIR}
— 存储给定作业的配置和相关元数据的目录的绝对路径
–${ITEM_FULL_NAME}
— 给定作业的完整名称,可能是用斜杠分隔的,例如文件夹foo
中的作业bar
的名称为foo/bar
该值通常应包括${ITEM_ROOTDIR}
或${ITEM_FULL_NAME}
,否则不同的作业将共享相同的工作空间。
方案2
用户还提到了路径中可能存在空格的问题。您可以检查config.xml
文件中的路径是否包含空格,并确保路径以正确的方式设置。
请注意,这些解决方案可能因Jenkins版本和配置而有所不同。建议在操作之前备份config.xml
文件,并在进行任何更改之前仔细阅读相关文档。
希望这些解决方案能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。