Ответ 1
Через консоль Script (Управление Jenkins → Узлы → Выберите консоль node → Script) node мы можем выполнить groovy script. Выполните следующую команду, чтобы получить IP-адрес.
println InetAddress.localHost.canonicalHostName
Windows slave node подключен к серверу Jenkins через "Java web start". Системная информация node не имеет IP-адреса.
Мне пришлось пробегать все подчиненные node, и мы нашли, какой аппарат (ip-адрес) соответствует ведомому node в Jenkins.
Есть ли способ найти IP-адрес ведомого node от самого Дженкинса?
Через консоль Script (Управление Jenkins → Узлы → Выберите консоль node → Script) node мы можем выполнить groovy script. Выполните следующую команду, чтобы получить IP-адрес.
println InetAddress.localHost.canonicalHostName
Чтобы ответить на тот же вопрос на не-оконном подчинении Jenkins:
Получить IP-адрес:
println "ifconfig".execute().text
Получить имя хоста:
println "hostname".execute().text
Наиболее эффективный эффективный и независимый от платформы способ узнать IP, вероятно, следующий groovy код для "глобального" Script Консоль на главном:
import hudson.model.Computer.ListPossibleNames
def node = jenkins.model.Jenkins.instance.getNode( "myslave" )
println node.computer.getChannel().call(new ListPossibleNames())
В консоли это дает (например)
Result
[192.168.0.17]
Результатом является список строк, так как потенциально несколько IP-адресов на одной машине.
Поскольку для этого не требуются node -специфические консоли, легко добавить цикл вокруг кода, который охватывает все узлы.
В вашем задании Jenkins, если оно находится в groovy или иначе эхо ifonfig sh "/sbin/ifconfig -a | grep inet"
Чтобы получить ip на ведомом Windows:
Перейдите в консоль Script (Управление Jenkins → Узлы → Выберите консоль node → Script)
println "ipconfig".execute().text