Мне поручили установить некоторую проверку здоровья на некоторых работах Дженкинса. Идея состоит в том, чтобы получить статус задания и связанный с ним IP-адрес через API отдыха Jenkins, поэтому я могу использовать эту информацию для взаимодействия с другим непринужденным API. Я создал отличный скрипт, который успешно разбирает задания Jenkins и получает их статус (независимо от того, работает он или нет), но мне еще предстоит найти способ связать эти задания с их IP-адресами. Есть ли способ получить IP-адрес подчиненного в Jenkins через API-интерфейс остального, а если нет, есть ли другой способ получить указанный IP-адрес?Получение IP-адреса через API REST Jenkins?
Вот код, который я получил до сих пор, что работает как шарм:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')
import groovyx.net.http.RESTClient
import groovy.json.JsonSlurper
def jenkinsClient = new RESTClient('myJenkinsURL')
def monitorClient = new RESTClient('myOtherRestfulAPIURL')
monitorClient.auth.basic "<username>", "<pass>"
jenkinsClient.setHeaders(Accept: 'application/json')
monitorClient.setHeaders(Accept: 'application/json')
def jobs = []
def jenkinsGetJobs = jenkinsClient.get(path: 'view/Events/api/json', contentType: 'text/plain')
def jenkinsGetJobsSlurp = new JsonSlurper().parse(jenkinsGetJobs.data)
for (def j in jenkinsGetJobsSlurp.jobs){
jobs.add(j.name)
}
//Can we get a list of IPS?
for(def job in jobs){
def jenkinsResp = jenkinsClient.get(path : 'view/Events/job/' + job + '/api/json', contentType: 'text/plain', query: [depth:"1"])
def jenkinsSlurp = new JsonSlurper().parse(jenkinsResp.data)
// println slurp
if (jenkinsSlurp.builds[0].building == true){
println "The " + job + " job is running."
//Make a call to other Restful API here
}
if (jenkinsSlurp.builds[0].building == false){
println "The " + job + " job is not running."
}
}
В комментировал разделе меченого // мы можем получить список IPS? Я хотел бы как-то использовать Jenkins Rest API для получения списка IP-адресов подчиненных Jenkins.
Могу ли я сделать это с помощью остального API? А если нет, есть ли другой путь? Возможно, через CLI? Я не видел метод getIP() в любом месте документации Jenkins API, но я довольно новичок в этом, поэтому просто могу просто пропустить что-то простое.
В качестве краткосрочного решения я попытаюсь очистить HTML-страницу узла, чтобы захватить IP-адрес из описания swarm-slave, но я бы очень предпочел сделать это в более канонической или спокойной форме, если там это один. –
Возможный дубликат: http://stackoverflow.com/q/28092236/172599 –
Привет, Дейв, я не думаю, что это дубликат, так как это отдельный оригинальный скрипт. Он не работает от мастера Дженкинса, я просто запускаю его на своей локальной машине. –