Bob*_*har 13 java gradle jenkins
我有一个build.gradle任务,就像我的开发盒上的冠军一样,生成一个属性文件,记录生成构建的机器的名称.逻辑很简单......
def hostname = InetAddress.getLocalHost().getHostName();
Run Code Online (Sandbox Code Playgroud)
在我的开发框中,这总是产生与从bash shell中执行主机名相同的值.
bobk-mbp:DM_Server bobk$ hostname
bobk-mbp.local
Run Code Online (Sandbox Code Playgroud)
但是,在我们的jenkins CI服务器上,bash hostname返回一个东西,但我调用了InetAddress.getLocalHost().getHostName(); 返回别的东西.需要在jenkins机器上进行哪些更改才能使这两个返回相同的值?
Bri*_*ith 11
假设你在Linux上,从o/s执行的hostname命令返回内核配置的主机名.
InetAddress.getHostName()使用您的操作系统中配置的命名服务(DNS)对服务器的IP地址进行反向查找.
如果你需要o/s理解的主机名,通过System.getenv从环境变量获取它可能是最简单的选择.这不是一种完全可行的方法,但它可能足够而无需深入研究网络或系统管理员.
来自InetAddress.getHostName()的API文档;
如果使用主机名创建此InetAddress,则将记住并返回此主机名; 否则,将执行反向名称查找,并将根据系统配置的名称查找服务返回结果.如果需要查找名称服务,请调用getCanonicalHostName.
因此,您可能需要在Jenkins服务器上配置DNS.最简单的方法是编辑/ etc/hosts(我假设你的Jenkins在Linux上运行),并确保它看起来像这样:
127.0.0.1 localhost localhost.localdomain
<public IP address> <hostname> <hostname>.<domain>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31677 次 |
| 最近记录: |