Jenkins升级后@libs目录命名变更,如何恢复原命名方式?
能否恢复Jenkins @libs目录的旧命名方式(用库名而非UUID)
问题描述
我在将旧版Jenkins 2.204迁移到2.361.1版本后,Groovy脚本出现路径引用故障,原因是@libs目录的命名规则发生了变化:
- 旧版目录结构:
D:\jenkins_workspace\<workspace name>@libs\PC_Lib\PC_Scripts - 新版目录结构:
D:\jenkins_workspace\<workspace name>@libs\<UUID>\PC_Scripts
当前环境:Windows Server 2022,Jenkins 2.361.1,SCM为Subversion 1.8,脚本中的路径引用为:
def SCRIPT_PATH = "${env.WORKSPACE}@libs/PC_Lib/PC_Scripts"
请问是否可以恢复使用直接指定库名的旧命名方式,而非UUID?
解决方案
可以通过以下方式尝试恢复旧命名逻辑:
调整Jenkins全局Subversion配置
进入Jenkins的「Manage Jenkins」→「Configure System」→「Subversion」板块,查找是否有「External Library Directory Naming」或类似选项。部分版本的SVN插件提供了切换命名规则的开关,可选择使用库名而非UUID作为目录名。检查SVN插件版本与配置项
目录命名变化大概率是Jenkins SVN插件版本升级带来的行为变更。可以查看当前SVN插件的版本,对比旧版插件的配置项,确认是否有保留旧命名逻辑的设置。如果插件默认移除了该选项,也可以考虑降级插件到与旧版Jenkins兼容的版本(注意兼容性风险)。临时脚本适配(workaround)
如果暂时无法修改配置,可以调整Groovy脚本动态定位目标目录:def libsDir = new File("${env.WORKSPACE}@libs") def targetDir = libsDir.listFiles().find { dir -> dir.isDirectory() && new File(dir, "PC_Scripts").exists() } def SCRIPT_PATH = targetDir?.absolutePath ?: "${env.WORKSPACE}@libs/PC_Lib/PC_Scripts"这段代码会遍历
@libs下的所有目录,自动找到包含PC_Scripts的目录作为目标路径。
内容的提问来源于stack exchange,提问作者Timmy
相关产品推荐
相关产品推荐

