一、问题描述
有同事反馈,Jenkins编译失败,域名解析失败。错误如下所示:
FAILURE: Build failed with an exception.
* Where:
Script '/data1/jenkins/workspace/XXX/dependencies.gradle' line: 2
* What went wrong:
A problem occurred evaluating script.
> Could not get resource 'http://xxx.com/xxx/dependencies.gradle'.
> Could not HEAD 'http://xxx.com/xxx/dependencies.gradle'.
> xxx.com: Temporary failure in name resolution
二、解决问题
上面的问题是 xxx.com
这个域名无法进行解析,而实际上这个域名是我们内部的gitlab服务器对应的ip地址。
但是在Jenkins服务器上编译的时候,居然无法解析。
2.0 ChatGPT给出的答案
这是一个网络相关的错误,通常是由于DNS服务器无法解析或暂时无法解析某个域名而导致的。以下是可能的原因和解决方案:
原因:
- DNS服务器无法访问。
- 域名不存在或输入错误。
- DNS配置错误,DNS地址可能输入错误或没有正确配置。
- 缓存问题,可能是因为DNS缓存中保存的信息过时或错误。
解决方案:
- 检查网络连接。确保服务器可以连接到Internet,并且可以访问DNS服务器。
- 确保存在解析问题的域名是正确的。如果域名有误,就需要修正。
- 检查DNS配置,确认DNS设置正确。可以在服务器网络设置或者/etc/resolv.conf文件中查看DNS配置。
- 检查并清除DNS缓存。你可以使用
nslookup
或者dig
命令来测试DNS服务器是否可以解析域名。 - 重启服务器。有时候,一些暂时的问题可以通过重启服务器来解决。
- 更换其他DNS服务器,比如8.8.8.8(谷歌提供的DNS)。
注意,以上的解决方案可能需要一定的网络知识,如果你不是很了解的话可能需要找专业的网络管理员或者服务提供商帮助。
2.1 怀疑dns服务器配置错误
第一步我们怀疑dns服务器配置错误了,所以导致无法解析。因为这个域名只在我们内部的局域网的dns服务器上有做映射。因此我要去检查下Jenkins服务器上配置的dns服务器是否正确。
ssh到Jenkins服务器,输入下面的命令查看配置的dns服务器,如下所示
vim /etc/resolv.conf
和公司的网络管理员确认了,内部配置的DNS服务器配置没问题。
关于内网DNS实现内部域名解析的场景,如下面的示意图所示:
2.2 确认是不是Jenkins服务器的网络自身问题
我们在自己的windows电脑上,输入这个域名,发现可以直接访问,说明内部的DNS服务器是正常的,能够正确解析出来这个xxx.com
域名。
所以怀疑是Jenkins服务器自身的网络出问题了,联系网管,让网管将Jenkins服务器的网络服务弄好,然后就可以正常解析了。
如下所示:
编译成功!