Способ запросить ips доступных ведомых устройств Jenkins по метке во фристайле?

Есть ли возможность запросить список подчиненных IP-адресов Jenkins,
внутри фристайл-задания Jenkins,
при выполнении скрипта оболочки?

Может быть, как переменная окружения?


person Skip    schedule 17.10.2016    source источник
comment
Этот вопрос очень похож на другой вопрос, на который был дан ответ здесь: stackoverflow.com/a/31692758/4360457   -  person Bricktop    schedule 17.10.2016
comment
Нет это не так. Там же можно найти ответ на вопрос Как получить ip-адрес конкретного слейва. Итак, вы должны знать его имя. Как указано в моем вопросе, я запросил СПИСОК JENKINS SLAVE IPS. Таким образом, ips всех доступных ведомых устройств или ips ведомых устройств по метке.   -  person Skip    schedule 18.10.2016


Ответы (1)


Вы можете определить IP-адрес(а) ведомого узла через groovy. См. этот ответ.

Таким образом, вы можете действовать следующим образом:

  1. Создайте шаг сборки, который запишет IP-адреса всех интересующих ведомых устройств в текстовый файл.
  2. На этапе сборки сценария оболочки прочитайте IP-адреса из этого файла.

Например, этот отличный код напечатает имена и IP-адреса всех ведомых устройств с меткой mylabel:

import hudson.model.Computer.ListPossibleNames

slaves = Hudson.instance.slaves.findAll { it.getLabelString().split() contains 'mylabel' }
slaves.each {
  println "slave '${it.name}' has these IPs: " +  it.getChannel().call(new ListPossibleNames())
}

Пример вывода:

slave 'foo' has these IPs: [10.162.0.135]
person Alex O    schedule 18.10.2016
comment
А чтобы получить имена всех узлов, можно использовать JSON API. Предположим, что Jenkins работает на localhost:8080, это будет localhost:8080/computer/api/json. - person Skip; 18.10.2016
comment
Я бы предпочел также сделать это на уровне Groovy, чтобы у вас был весь выбор и отчетность за один чистый шаг. Я продлю ответ соответственно. - person Alex O; 18.10.2016