Jenkins自动更新后出现`InvalidBuildsDir: …/${ITEM_FULL_NAME}/builds does not resolve to an absolute path`错误

48次阅读
没有评论

问题描述

在将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文件,并在进行任何更改之前仔细阅读相关文档。

希望这些解决方案能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。

正文完