Jenkins中SVN手动构建正常但SCM轮询报Unknown host错误
碰到过好多次这种情况了——手动构建能拉SVN代码,但SCM轮询一触发就报unknown host,核心原因基本都是Jenkins服务运行的上下文和你手动操作时的环境不匹配,给你几个精准的排查和解决方向:
1. 先查Jenkins运行用户的DNS解析能力
你手动操作时用的是自己的登录用户,DNS解析走的是当前用户的配置,但Jenkins一般是用系统用户(比如jenkins)后台跑的,这个用户可能没配置正确的DNS,或者压根解析不了SVN服务器的域名:
- 登录Jenkins所在服务器,切换到Jenkins运行用户:
(Windows系统的话,得用su - jenkinsrunas /user:jenkins cmd或者去服务管理器里看Jenkins的运行用户) - 接着ping SVN服务器的域名:
如果ping不通,直接在服务器的ping your-svn-domain.com/etc/hosts(Windows是C:\Windows\System32\drivers\etc\hosts)里添加SVN域名和对应IP的映射,就能解决DNS解析问题。
2. 检查代理配置的差异
如果你手动拉代码时用了代理,但Jenkins服务的环境里没配置同样的代理,轮询时就会连不上SVN:
- 进Jenkins管理后台 → 系统管理 → 系统设置,找到「代理服务器」板块,确认配置的代理和你手动操作时用的完全一致
- 另外也可以检查Jenkins运行用户的环境变量,看有没有
HTTP_PROXY/HTTPS_PROXY这些代理变量,和你自己用户的环境变量对比补全
3. 对比SVN客户端的配置文件
手动操作时你用的是自己用户的SVN配置(比如~/.subversion/servers),但Jenkins用的是运行用户的SVN配置,两者可能不一样:
- 切换到Jenkins用户后,查看
~/.subversion/servers文件,重点看针对这个SVN服务器的代理、SSL等特殊配置,和你自己用户的配置对齐 - Windows系统下,Jenkins用户的SVN配置在
C:\Users\jenkins\.subversion目录里
4. 确认凭据的加载权限
虽然手动构建用凭据成功了,但SCM轮询时Jenkins可能没正确加载到凭据,或者凭据的权限有问题:
- 进入你的Jenkins任务配置页面,重新保存一遍凭据,确保凭据是全局可用或者该任务有权限访问的
- 可以尝试重新添加一次SVN凭据,选对类型(比如用户名密码或SSH密钥),避免凭据配置有隐性问题
5. 排查网络防火墙策略
这个概率相对低,但也可以排查下:手动构建时你的IP在SVN服务器的允许列表里,但Jenkins服务器的IP没被允许?
- 切换到Jenkins用户,用
svn info http://your-svn-url命令测试,如果这个命令失败,直接联系SVN服务器管理员,把Jenkins服务器的IP加入访问白名单
内容的提问来源于stack exchange,提问作者user3065934
相关产品推荐
相关产品推荐

