我有一个参数化的jenkins管道作业,唯一的参数是Node类型(名为myNode),在这里我总是可以使用jenkins服务器的所有节点。
在我的groovy管道中,我想设置两个变量:
- hostname of the node (myNode)
- IP address of the node (myNode)
我尝试了很多选项,但我不能同时获得主机名和IP地址,而且我还得到了不同的结果,这取决于从站是windows还是linux。在我看来,因为jenkins知道节点,这将是简单的事情,但似乎不是。
我尝试过的方法:
def find_ip(node_name){
for (slave in Jenkins.instance.slaves) {
host = slave.computer.hostName
addr = InetAddress.getAllByName(host)
if (! slave.name.trim().equals(node_name.trim())) { continue }
String rawIpAddress = addr[0]
ipAddress = rawIpAddress.substring(rawIpAddress.lastIndexOf("/") + 1)
print "ipAddress: " + ipAddress
return host
}
}
node('master') {
stage('stage1') {
println "hostname: " + find_ip(env.myNode)
}
}
如果slave是windows,我会得到主机名和IP地址,如果是linux,我会得到这两个字段的IP地址。
先谢谢你
1条答案
按热度按时间7tofc5zh1#