使用Jenkins CLI安装插件遭遇UnknownHostException错误求助
解决Jenkins CLI安装插件时出现UnknownHostException的问题
问题分析
从错误栈java.net.UnknownHostException: updates.jenkins.io可以看出,执行CLI命令时,Jenkins服务器进程无法解析插件源的域名。而通过UI能正常安装插件,说明Jenkins的插件源配置本身有效,问题出在CLI命令执行时的网络/域名解析环节。
解决方案
1. 检查Jenkins服务器的DNS解析能力
登录Jenkins所在服务器,执行以下命令验证域名解析:
ping updates.jenkins.io ping get.jenkins.io
如果返回"未知主机",说明服务器DNS配置异常,需修改DNS设置:
- Linux系统:编辑
/etc/resolv.conf,添加有效DNS服务器(如nameserver 8.8.8.8或nameserver 114.114.114.114) - Windows系统:在网络适配器设置中修改DNS服务器地址
2. 确认Jenkins全局代理配置(若使用代理)
如果Jenkins通过代理访问外部网络,需确保CLI命令使用Jenkins的全局代理:
- 进入Jenkins UI → Manage Jenkins → Manage Plugins → Advanced
- 检查HTTP Proxy配置是否正确,且勾选"Use proxy for downloads"
- 重新执行CLI安装命令,此时Jenkins服务器会使用配置的代理访问插件源
3. 改用本地下载后上传的方式安装
若服务器网络限制无法直接访问插件源,可先在联网机器上下载插件文件,再通过CLI上传安装:
- 下载插件HPI文件:
wget https://updates.jenkins.io/download/plugins/htmlpublisher/1.31/htmlpublisher.hpi
- 使用CLI上传本地文件安装:
java -jar jenkins-cli.jar -s http://localhost:8080 -auth @cred install-plugin ./htmlpublisher.hpi
4. 验证Jenkins进程的网络权限
部分服务器的防火墙、SELinux或AppArmor可能限制Jenkins进程的网络访问,可通过以下命令验证:
- Linux系统:切换到Jenkins用户身份,执行curl测试网络:
su - jenkins -c "curl -I https://updates.jenkins.io"
若返回HTTP 200或302状态码,说明网络权限正常;否则需调整防火墙/安全策略,允许Jenkins进程访问外部HTTPS端口(443)
内容的提问来源于stack exchange,提问作者Tri Man
相关产品推荐
相关产品推荐

