
目录
[一、自由风格项目(你现在的任务)最常见 3 个原因](#一、自由风格项目(你现在的任务)最常见 3 个原因)
[1. 仅改全局工具,任务配置没重新保存(最高频)](#1. 仅改全局工具,任务配置没重新保存(最高频))
[2. 旧 Node 工具缓存目录残留,仍调用损坏的 26.5 版本](#2. 旧 Node 工具缓存目录残留,仍调用损坏的 26.5 版本)
[3. 勾选了缓存 npm,旧环境变量残留](#3. 勾选了缓存 npm,旧环境变量残留)
[二、从节点 Slave Agent 场景(容易忽略)](#二、从节点 Slave Agent 场景(容易忽略))
[三、Pipeline 流水线特殊规则(若你后续用 Jenkinsfile)](#三、Pipeline 流水线特殊规则(若你后续用 Jenkinsfile))
[四、Jenkins 服务缓存兜底修复(全部无效时执行)](#四、Jenkins 服务缓存兜底修复(全部无效时执行))
结合你上一篇文章 --libatomic依赖报错场景,分自由风格项目(你当前截图类型) 和通用缓存 / 节点问题说明:
一、自由风格项目(你现在的任务)最常见 3 个原因
1. 仅改全局工具,任务配置没重新保存(最高频)
Jenkins 不会自动同步全局工具变更,修改全局 Node 后,必须进入任务配置页面点「保存」,否则旧的工具绑定缓存不会刷新:
- 打开你的项目 → 配置
- 直接拉到最底部,点击【保存】(不用修改任何选项,单纯保存即可刷新绑定)
- 重新构建
原理:任务的工具选择下拉框缓存存在任务配置 xml 里,全局工具新增 / 修改后,任务配置不保存就不会加载新工具环境。
2. 旧 Node 工具缓存目录残留,仍调用损坏的 26.5 版本
你之前用 NodeJS26.5,二进制缺依赖执行失败,Jenkins 会复用本地已下载的旧工具包,不会自动重新下载新版:
- 清理 Jenkins 工具缓存目录(Linux)
bash
# 删除旧损坏的Node26.5安装文件
rm -rf /var/jenkins_home/tools/nodejs/NodeJS26.5
# 删除任务工作区缓存
rm -rf /var/jenkins_home/workspace/你的任务名
- 回到全局工具,新建低版本 Node(20LTS),任务配置保存后重建,会自动下载全新安装包。
3. 勾选了缓存 npm,旧环境变量残留
截图中 Cache location 开启默认缓存,旧 node 的 PATH 缓存会残留: 临时解决:构建步骤最开头手动清空 npm 缓存
npm cache clean --force
二、从节点 Slave Agent 场景(容易忽略)
如果构建不在主节点运行:
- Slave 节点的 tools 目录独立,全局工具修改后主节点生效,但从节点不会自动同步;
- Slave 会保留旧版本 Node 安装包,不会主动重新拉取; 修复:
- 登录 Slave 机器,删除对应 node 工具目录
- 重启 Slave 代理连接,再重新构建任务
三、Pipeline 流水线特殊规则(若你后续用 Jenkinsfile)
tools {nodejs 'xxx'}名称写错 / 没同步修改,不会加载新全局工具;- Pipeline 缓存:修改 Jenkinsfile 后,需要重新扫描流水线 / 重建,旧流水线缓存不会自动刷新工具。
四、Jenkins 服务缓存兜底修复(全部无效时执行)
- 重启 Jenkins 服务,清空全局工具内存缓存
bash
# CentOS/Anolis
systemctl restart jenkins
- 重启完成后,打开任务配置保存一次,再构建。
五、针对你当前场景最简操作步骤(直接照做)
- 全局工具配置删除 NodeJS26.5,新建 Node20.x LTS;
- 进入你的任务配置页面,下拉框选择新的 Node20 工具,拉到底部点【保存】;
- 服务器删除旧损坏工具目录:
rm -rf /var/jenkins_home/tools/nodejs/NodeJS26.5; - 重新执行构建,此时会自动下载全新无依赖问题的 Node20。
补充关键点
全局工具只是工具仓库定义,每个任务会单独缓存绑定关系、工具安装包;
- 修改全局工具 ≠ 自动更新所有任务的环境;
- 必须任务配置保存 + 清理旧工具本地文件 双操作才能刷新。