Jenkins can't parse argument number: changelog.url 问题

Jenkins <j:otherwise> can’t parse argument number: changelog.url 问题


最近使用了Jenkins,发现了一问题,提示如下。

org.apache.commons.jelly.JellyTagException: jar:file:/Users/xiaqiulei/.jenkins/war/WEB-INF/lib/jenkins-core-2.147.jar!/hudson/model/UpdateCenter/CoreUpdateMonitor/message.jelly:53:20: <j:otherwise> can't parse argument number: changelog.url
	at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:726)
	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:281)
	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
	at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLi

排查了好久,才发现问题,原因是升级了一个插件导致的,经过一个多小时的排查,终于找到了,是jeknins中文语言包,卸载或者降级即可。

Localization: Chinese (Simplified)
Jenkins 及其插件的简体中文语言包。

但是,页面出现了问题,就不能接入插件管理的页面,可以jenkins目录,删除插件文件,重启即可。

我的电脑是mac,插件地址如下,删除localization-zh-cnlocalization-zh-cn.jpi即可。

/Users/xiaqiulei/.jenkins/plugins

当然还有一种办法可以解决,jenkins系统管理页面是进入不了,如下所示

http://localhost:8080/manage

但是可以直接访问地址的

http://localhost:8080/pluginManager/
01:42:32 Started by user Admin 01:42:32 Running as SYSTEM 01:42:32 Building on the built-in node in workspace E:\Jenkins\workspace\UE\5.5.4\Echo_BuildForUGS_01 01:42:32 Executor number at runtime: 0 01:42:32 ... p4 login + 01:42:32 ... p4 login -s + 17:33:14 ... p4 client -o Jenkins-Build-Echo-UE-5.5.4 + 17:33:14 ... p4 info + 17:33:14 ... p4 info + 17:33:14 ... p4 client -o Jenkins-Build-Echo-UE-5.5.4 + 17:33:15 ... p4 client -i + 17:33:15 ... View: + 17:33:15 ... p4 counter change + 17:33:15 ... p4 changes -m1 -ssubmitted //Jenkins-Build-Echo-UE-5.5.4/...@650 + 17:33:16 P4: found 650 revision in //Jenkins-Build-Echo-UE-5.5.4/...@650 17:33:16 ... p4 changes -m1 -ssubmitted //Jenkins-Build-Echo-UE-5.5.4/...@1,650 + 17:33:19 P4: found 650 revision in //Jenkins-Build-Echo-UE-5.5.4/...@1,650 17:33:19 ... p4 repos -C + 17:33:19 P4: builds: 650 17:33:19 ... p4 login + 17:33:19 ... p4 login -s + 17:33:19 ... p4 client -o Jenkins-Build-Echo-UE-5.5.4 + 17:33:19 ... p4 info + 17:33:19 ... p4 info + 17:33:19 ... p4 client -o Jenkins-Build-Echo-UE-5.5.4 + 17:33:19 17:33:19 P4 Task: establishing connection. 17:33:19 ... server: ssl:192.168.2.4:1668 17:33:19 ... node: a849e4696f69 17:33:19 Building on Node: built-in 17:33:19 ... p4 login + 17:33:19 ... p4 login -s + 17:33:19 ... p4 client -o Jenkins-Build-Echo-UE-5.5.4 + 17:33:19 ... p4 info + 17:33:19 ... p4 info + 17:33:19 ... p4 client -o Jenkins-Build-Echo-UE-5.5.4 + 17:33:19 17:33:19 P4 Task: establishing connection. 17:33:19 ... server: ssl:192.168.2.4:1668 17:33:19 ... node: a849e4696f69 17:33:19 17:33:19 P4 Task: reverting all pending and shelved revisions. 17:33:19 ... p4 revert E:\Jenkins\workspace\UE\5.5.4\Echo_BuildForUGS_01/... + 17:33:19 P4 Task: attempt: 1 01:33:22 ERROR: P4: Task Exception: hudson.AbortException: P4JAVA: Error(s): 01:33:22 Path '/E:\Jenkins\workspace\UE\5.5.4\Echo_BuildForUGS_01/...' is not under client's root 'E:\Jenkins\workspace\UE\5.5.4\Echo_BuildForUGS_01'. 01:33:22 01:33:25 Finished:
03-26
<think>好的,我现在需要解决用户在Jenkins中遇到的P4错误:“revert path not under client root”。首先,我得理解这个错误的含义。根据Perforce的文档,当尝试执行的操作涉及到不在客户端工作区根目录下的路径时,就会出现这个错误[^1]。也就是说,用户可能在配置Jenkins的P4插件时,指定的文件路径超出了客户端定义的根目录范围。 接下来,我应该检查几个可能的配置错误。首先是客户端的根目录设置。用户需要确认在Jenkins的P4插件配置中,客户端(Workspace)的根目录是否正确。这通常在Jenkins的“Manage Jenkins” -> “System Configuration” -> “Perforce”部分设置。如果根目录设置不正确,比如路径拼写错误或者目录结构不符,就会导致此问题。 然后,查看工作区视图(View)的映射是否正确。Perforce客户端的工作区视图定义了哪些 depot 路径被映射到本地的哪个目录。如果视图中的映射不正确,例如路径映射超出了客户端的根目录,或者使用了错误的通配符,就会触发这个错误。例如,假设客户端根目录是`/home/user/workspace`,而视图中有一条映射是`//depot/project/... //client_workspace/...`,这样是正确的。但如果映射写成`//depot/... //client_workspace/project/...`,可能导致路径超出根目录的范围[^2]。 还要检查Jenkins任务中的文件路径参数。用户可能在构建任务中指定了某个文件或目录的路径,而这个路径相对于客户端根目录来说是无效的。例如,如果客户端根目录是`/jenkins/workspace`,而任务中尝试操作`/jenkins/workspace/../other_dir`,这样的相对路径可能会解析到根目录之外,从而引发错误。 另外,权限问题也不容忽视。虽然错误提示直接指向路径问题,但有时用户权限不足可能导致客户端配置无法正确读取,进而引发类似错误。需要确认运行Jenkins服务的用户(如jenkins用户)是否有权限访问客户端根目录及其所有子目录。 可能的解决方案包括:首先,验证并修正客户端的根目录设置,确保与实际的本地路径一致。其次,检查工作区视图的映射,确保所有depot路径都正确映射到客户端根目录下的子目录。如果任务中使用了动态生成的路径,需要添加校验步骤,确保路径不会超出根目录。此外,可以尝试在Perforce插件中使用绝对路径而非相对路径,避免路径解析错误。 如果用户仍然遇到问题,建议启用Perforce插件的详细日志,查看具体的路径解析过程,这有助于定位是哪个步骤的路径配置错误。同时,参考Perforce的官方文档和Jenkins插件的说明文档,确认所有配置项是否符合要求。 最后,考虑是否有其他因素,比如多个客户端配置的冲突,或者Jenkins节点配置问题(在分布式构建环境下,不同节点的路径可能不一致)。需要确保所有相关节点上的客户端配置都正确无误。</think>### Jenkins P4 "revert path not under client root" 错误解决方案 #### 错误原因 该错误表明 Jenkins 的 Perforce 插件尝试操作的路径超出了客户端定义的根目录范围[^1]。常见原因包括: 1. **客户端根目录配置错误** 2. **工作区视图(View)映射不匹配** 3. **任务中使用了相对路径或非法路径符号** 4. **权限问题导致路径解析异常** --- #### 解决步骤 1. **检查客户端根目录配置** - 进入 Jenkins 全局配置:`Manage Jenkins > Configure System > Perforce` - 确认 `Client Workspace` 的根目录路径与实际物理路径完全一致 - 示例正确配置: ```plaintext Client name: jenkins-client-prod Root: /opt/jenkins/workspaces/p4_prod # 必须是绝对路径 ``` 2. **验证工作区视图映射** - 在 Perforce 客户端执行 `p4 client` 命令查看视图 - 确保映射规则不包含越界路径: ```plaintext //depot/source/... //jenkins-client-prod/source/... # 正确:映射到客户端根目录下 //depot/docs/... //jenkins-client-prod/../docs/... # 错误:`..` 会跳出根目录 ``` 3. **检查任务中的路径参数** - 在 Jenkins 任务的 `Perforce` 配置模块中: - 避免使用 `../` 等相对路径符号 - 推荐使用基于客户端根目录的绝对路径: ```plaintext ✔️ 正确://depot/source/build.sh ❌ 错误:../../depot/source/build.sh ``` 4. **添加路径校验步骤(Python 示例)** ```python import os client_root = "/opt/jenkins/workspaces/p4_prod" target_path = os.path.abspath(os.path.join(client_root, "subdir/file.txt")) if not target_path.startswith(client_root): raise ValueError(f"路径 {target_path} 超出客户端根目录!") ``` 5. **启用详细日志排查** - 在 Jenkins 系统配置中增加日志级别: ```plaintext org.jenkinsci.plugins.p4 = FINE ``` - 日志会显示类似关键信息: ```plaintext [P4] Reverting files at: //depot/outside/path [P4] Client root: /opt/jenkins/workspaces/p4_prod ``` --- #### 进阶排查 - **权限验证** 使用 `p4 protects` 命令确认 Jenkins 服务账号对目标路径有 `write` 权限: ```bash p4 protects //depot/source/... # 输出应包含:write user jenkins * //depot/source/... ``` - **多节点环境同步** 在分布式构建环境中,确保所有 Jenkins agent 节点的客户端配置一致: ```plaintext Agent1 路径: /opt/jenkins/workspaces/p4_prod Agent2 路径: /mnt/shared/workspaces/p4_prod # 必须同步修改 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值