执行java -jar jenkins.war时Jenkins控制台报错,无法安装插件
先看你遇到的错误:
[33mJan 09, 2018 4:31:06 PM hudson.model.UpdateCenter updateDefaultSite WARNING: Upgrading Jenkins. Failed to update the default Update Site 'default'. Plugin upgrades may fail. net.sf.json.JSONException : Missing value. at character 29 of background-color:#425563; }
这个错误我之前排查过,核心问题是Jenkins请求默认更新站点时,拿到的不是预期的JSON数据,而是一段CSS代码(就是错误里的background-color:#425563; }),大概率是网络代理拦截、更新配置文件损坏,或者网络波动导致下载的文件出错了。下面是一步步的解决办法:
第一步:停止Jenkins服务
如果你的Jenkins还在运行,直接在命令行按Ctrl+C终止进程;要是用系统服务方式运行的,就用对应命令停止(比如Linux的systemctl stop jenkins)。第二步:清理损坏的更新配置文件
找到你的Jenkins主目录:Windows默认是C:\Users\<你的用户名>\.jenkins,Linux/macOS默认是~/.jenkins,如果自定义过JENKINS_HOME环境变量就去对应路径。进入updates文件夹,找到default.json文件,把它删除或者重命名(比如改成default.json.bak)——这个文件已经损坏,留着只会继续报错。第三步:手动获取正确的更新站点JSON
直接从Jenkins官方更新源拿正确的JSON文件:- 用浏览器打开
https://updates.jenkins.io/update-center.json,确认页面显示的是纯JSON代码(不是网页) - 把内容保存成
default.json,放到刚才的updates文件夹里
如果是代理问题导致的,先确保网络能正常访问这个地址,或者后续在Jenkins里配置正确代理
- 用浏览器打开
第四步:重新启动Jenkins
再次执行java -jar jenkins.war启动Jenkins,这次应该不会再弹出那个JSONException警告了。额外排查:代理配置问题
如果重启后还是有问题,大概率是代理设置不对:- 等Jenkins启动完成后进入管理界面
- 进入
Manage Jenkins->Manage Plugins->Advanced标签页 - 在
HTTP Proxy Configuration部分填写正确的代理主机、端口,必要时添加代理的用户名和密码 - 点击
Test URL按钮,输入https://updates.jenkins.io,确保测试通过
另外,你可以先在命令行测试网络连通性,比如执行curl https://updates.jenkins.io/update-center.json,看看返回的是不是正常的JSON数据。如果返回的是HTML或者CSS,那肯定是网络层面的问题,得先解决这个才能让Jenkins正常获取插件列表。
内容的提问来源于stack exchange,提问作者user3813599

