2026-03-16 如何清除Jenkins缓存(deepseek)
🚨 问题根源
Jenkins 在第一次解析 pipeline 后,会把解析结果缓存起来。即使 Jenkinsfile 内容变了,这个缓存可能还在使用旧的定义。
✅ 彻底解决方案
方法一:在 Jenkins 中删除分支并重新扫描(最有效)
# 1. 登录到 Jenkins 服务器
ssh root@你的服务器IP
# 2. 进入 Jenkins 工作目录
cd /var/lib/jenkins
# 3. 直接删除 uat 分支的所有相关文件
sudo rm -rf jobs/iuniko/branches/uat/
sudo rm -rf workspace/iuniko_uat/
sudo rm -rf caches/git-f34eceb7974ebd40ca767301ee764fda/
# 4. 重启 Jenkins
sudo systemctl restart jenkins
# 5. 等待 Jenkins 启动
sleep 30
方法二:在 Web 界面操作
-
删除 uat 分支任务:
- 进入
iuniko任务主页 - 点击 "Branches" 标签
- 找到
uat分支 - 点击右侧的 "Delete branch"(垃圾桶图标)
- 进入
-
清理工作空间:
- 进入
iuniko任务 - 点击左侧 "Workspace"
- 如果有
uat相关的工作空间,清理掉
- 进入
-
重新扫描仓库:
- 点击主任务的 "Scan Repository Now"
方法三:在 Jenkins 脚本命令行中强制清理
- 访问
http://你的服务器IP:8080/script - 输入以下命令并运行:
// 强制清理所有分支缓存
def job = Jenkins.instance.getItemByFullName("iuniko")
if (job) {
// 删除所有分支的构建记录
job.getItems().each { branch ->
println "清理分支: ${branch.name}"
branch.getBuilds().each { it.delete() }
branch.delete()
}
println "所有分支已清理"
}
// 清理工作空间
def wsDirs = ["iuniko_sit", "iuniko_uat", "iuniko_prd", "iuniko_master"]
wsDirs.each { dir ->
def ws = Jenkins.instance.getWorkspaceFor(dir)
if (ws) {
ws.deleteRecursive()
println "已清理: ${dir}"
}
}
// 重新加载
Jenkins.instance.reload()
println "完成!请重新扫描仓库"
方法四:最简单的终极方案
直接在 Jenkins 中重命名任务,强制创建全新的任务:
- 进入 Jenkins 主页
- 点击 "New Item"
- 输入新名称,比如
arco-demo-pipeline - 选择 "Multibranch Pipeline"
- 配置完全相同的 Git 仓库地址
- 保存后,它会完全重新扫描,不受旧缓存影响
📝 优先尝试方法二
建议先试试方法二(Web界面删除分支),这是最简单的:
- 在 Jenkins 中找到
iuniko任务 - 点击 "Branches"
- 找到
uat分支,点击删除 - 然后点击主任务的 "Scan Repository Now"
这样 Jenkins 会重新从 Git 仓库获取最新的 Jenkinsfile,应该就能用正确的 nodejs 'Node18' 配置了。
如果还不行,就用方法一在服务器上直接删除文件。

浙公网安备 33010602011771号