//------------------------------------------------------------------------------ // Ejecutar automatizacion STELA desde Pipeline JENKINS y esperar que finalice // Cuando finaliza se controla el resultado y en base al mismo se establece // la condicion de ejecucion del pipeline, exitosa o con error // // Creado por: STB Fecha: 2023-11-20 //------------------------------------------------------------------------------ // // Variables globales de configuración al ambiente de cada cliente // def STELA_server = 'servidor-stela.com' // Nombre del servidor STELA donde esta publicada la API CI/CD def token = 'token-proyecto' // Token del proyecto STELA def id_Automation = 'id-automatizacion' // Id de la automatizacion, carpeta o Escenario a ejecutar def espera_stela = 30 // Pausa en segundos que se hace entre llamados de consulta para esperar el resultado // Variables globales def started = false // Indica que la automatizacion de STELA se incio correctamente def execId = 0 // Numero de ejecución devuelto por STELA pipeline { agent any stages { stage('Invoca la API CI/CD de STELA para ejecutar una Automatizacion, Carpeta o Escenario') { steps { script { def requestData = [ id_Automation: '', token: '' ] requestData ['id_Automation'] = id_Automation requestData ['token'] = token echo "RequestData:" + groovy.json.JsonOutput.toJson(requestData) def URLServicioEjecucion = 'https://' + STELA_server + '/STELAUI_API_CICD/execute/automation' def response = httpRequest( url: URLServicioEjecucion , httpMode: 'POST', contentType: 'APPLICATION_JSON', requestBody: groovy.json.JsonOutput.toJson(requestData) ) def jsonResponse = '' if (response.status == 200) { jsonResponse = readJSON text: response.content // Obtiene el resultado del servicio en formato JSON echo "Respuesta de STELA: $jsonResponse" //Se controla si el resultado es Sucess if (jsonResponse['success'] == true) { // Se pasa al control de resultados para esperar que finalice started = true execId = jsonResponse['id_execution'] } else { // Se publica el mensaje de error error "STELA no pudo iniciar automatizacion: ${response.status}" } } else { error "ERROR: Se pudo ejecutar servicio - HTTP Status: ${response.status}" } } } } stage('Control del resultado de la ejecución en STELA ') { // Esta etapa se ejecuta solamente si la ejecución fue iniciada when { expression { return started } } steps { script { def url = 'https://' + STELA_server + '/STELAUI_API_CICD/execute/result?token=' + token + '&exe_token=' + execId def response = httpRequest( url: url, httpMode: 'GET', contentType: 'APPLICATION_JSON', acceptType: 'APPLICATION_JSON', requestBody: '' ) def jsonResponse = '' if (response.status == 200) { // Obtiene el resultado del servicio en formato JSON jsonResponse = readJSON text: response.content // Muestra el resultado del llamado al servicio echo "Respuesta de STELA al pedido de resultados: $jsonResponse" } else { error "STELA No pudo ejecutar la automatización - HTTP Status: ${response.status}" } if (jsonResponse['success'] == true) { // Se pregunta por el resultado hasta que STELA finalice la ejecución while (jsonResponse['result'] < 2){ // Esperamos para preguntar nuevamente a STELA por el resultado sleep (espera_stela) // Consulta a STELA por el resultado echo ("Se consulta a STELA por el resultado") response = httpRequest( url: url, httpMode: 'GET', contentType: 'APPLICATION_JSON', acceptType: 'APPLICATION_JSON', requestBody: '' ) if (response.status == 200) { // Obtiene el resultado del servicio en formato JSON jsonResponse = readJSON text: response.content // Muestra el resultado del llamado al servicio echo "Respuesta de STELA al pedido de resultados: $jsonResponse" } else { error "STELA No pudo ejecutar la automatización - HTTP Status: ${response.status}" } } // Se chequea el resultado switch(jsonResponse['result']) { case 2: echo ("STELA: Las automatizaciones finalizaron EXITOSAMENTE."); break; case 3: error ("STELA: Las automatizaciones finalizaron CON FALLOS."); break; default: error ("STELA: Las automatizaciones finalizaron CON FALLOS. Vea " + jsonResponse) } } } } } } } --------------------- Versiones anteriores --------------------- //------------------------------------------------------------------------------ // Ejecutar automatización STELA desde Pipeline JENKINS y esperar que finalice // Cuando finaliza se controla el resultado y en base al mismo se establece // la condicion de ejecución del pipeline, exitosa o con error // // Creado por: STB Fecha: 2023-11-20 //------------------------------------------------------------------------------ // Variables globales def started = false // Indica que la automatizacion de STELA se incio correctamente def execId = 0 // Numero de ejecución devuelto por STELA def STELA_server = 'demo.stela.ai' // Nombre del servidor STELA donde está publicada la API CI/CD def token = '655b5a068fdff16a9ee87f4a' // Token del proyecto STELA def id_Automation = '61cc7ab1be9154650c94f9b0' // Id de la automatizacion, carpeta o Escenario a ejecutar pipeline { agent any stages { stage('Invoca la API CI/CD de STELA para ejecutar una automatización') { steps { script { def requestData = [ id_Automation: '', token: '' ] requestData ['id_Automation'] = id_Automation requestData ['token'] = token echo "RequestData:" + groovy.json.JsonOutput.toJson(requestData) def URLServicioEjecucion = 'https://' + STELA_server + '/STELAUI_API_CICD/execute/automation' def response = httpRequest( url: URLServicioEjecucion , httpMode: 'POST', contentType: 'APPLICATION_JSON', requestBody: groovy.json.JsonOutput.toJson(requestData) ) def jsonResponse = '' if (response.status == 200) { jsonResponse = readJSON text: response.content // Obtiene el resultado del servicio en formato JSON echo "Respuesta de STELA: $jsonResponse" //Se controla si el resultado es Sucess if (jsonResponse['success'] == true) { // Se pasa al control de resultados para esperar que finalice started = true execId = jsonResponse['id_execution'] } else { // Se publica el mensaje de error error "STELA no pudo iniciar automatización: ${response.status}" } } else { error "Failed to invoke Web Service 1 - HTTP Status: ${response.status}" } } } } stage('Control resultado ejecución STELA ') { when { expression { return started } } steps { script { def url = 'https://' + STELA_server + '/STELAUI_API_CICD/execute/result?token=' + token + '&exe_token=' + execId def response = httpRequest( url: url, httpMode: 'GET', contentType: 'APPLICATION_JSON', acceptType: 'APPLICATION_JSON', requestBody: '' ) def jsonResponse = '' if (response.status == 200) { // Obtiene el resultado del servicio en formato JSON jsonResponse = readJSON text: response.content // Muestra el resultado del llamado al servicio echo "Respuesta de STELA al pedido de resultados: $jsonResponse" } else { error "STELA No pudo ejecutar la automatización - HTTP Status: ${response.status}" } if (jsonResponse['success'] == true) { // Se pregunta por el resultado hasta que STELA finalice la ejecucion while (jsonResponse['result'] < 2){ sleep (30) response = httpRequest( url: url, httpMode: 'GET', contentType: 'APPLICATION_JSON', acceptType: 'APPLICATION_JSON', requestBody: '' ) if (response.status == 200) { // Obtiene el resultado del servicio en formato JSON jsonResponse = readJSON text: response.content } else { error "STELA No pudo ejecutar la automatización - HTTP Status: ${response.status}" } // Vuelve al inicio del loop echo ("Se consulta a STELA por el resultado") } // Se chequea el resultado switch(jsonResponse['result']) { case 2: echo ("STELA: Las automatizaciones finalizaron EXITOSAMENTE."); break; case 3: error ("STELA: Las automatizaciones finalizaron CON FALLOS."); break; default: error ("STELA: Las automatizaciones finalizaron CON FALLOS. Vea " + jsonResponse) } } } } } } } //------------------------------------------------------------------------------ // Ejecutar automatizacion STELA desde Pipeline JENKINS y esperar que finalice // Cuando finaliza se controla el resultado y en base al mismo se establece // la condicion de ejecucion del pipeline, exitosa o con error // // Creado por: STB Fecha: 2023-11-20 //------------------------------------------------------------------------------ // Variables globales def started = false // Indica que la automatizacion de STELA se incio correctamente def execId = 0 // Numero de ejecucion devuelto por STELA def token = 'token' // Token del proyecto STELA def id_Automation = 'id' // Id de la automatizacion, carpeta o Escenario a ejecutar pipeline { agent any stages { stage('Invoca la API CI/CD de STELA para ejecutar una Automatizacion, Carpeta o Escenario') { steps { script { def requestData = [ id_Automation: '', token: '' ] requestData ['id_Automation'] = id_Automation requestData ['token'] = token echo "RequestData:" + groovy.json.JsonOutput.toJson(requestData) def response = httpRequest( url: 'https://servidor-setela.com/STELAUI_API_CICD/execute/automation', httpMode: 'POST', contentType: 'APPLICATION_JSON', requestBody: groovy.json.JsonOutput.toJson(requestData) ) def jsonResponse = '' if (response.status == 200) { jsonResponse = readJSON text: response.content // Obtiene el resultado del servicio en formato JSON echo "Respuesta de STELA: $jsonResponse" //Se controla si el resultado es Sucess if (jsonResponse['success'] == true) { // Se pasa al control de resultados para esperar que finalice started = true execId = jsonResponse['id_execution'] } else { // Se publica el mensaje de error error "STELA no pudo iniciar automatizacion: ${response.status}" } } else { error "Failed to invoke Web Service 1 - HTTP Status: ${response.status}" } } } } stage('Control resultado ejecución STELA ') { when { expression { return started } } steps { script { def url = 'https://servidor.stela.com/STELAUI_API_CICD/execute/result?token=655b5a068fdff16a9ee87f4a&exe_token=' + execId def response = httpRequest( url: url, httpMode: 'GET', contentType: 'APPLICATION_JSON', acceptType: 'APPLICATION_JSON', requestBody: '' ) def jsonResponse = '' if (response.status == 200) { // Obtiene el resultado del servicio en formato JSON jsonResponse = readJSON text: response.content // Muestra el resultado del llamado al servicio echo "Respuesta de STELA al pedido de resultados: $jsonResponse" } else { error "STELA No pudo ejecutar la automatizacion - HTTP Status: ${response.status}" } if (jsonResponse['success'] == true) { // Se pregunta por el resultado hasta que STELA finalice la ejecucion while (jsonResponse['result'] < 2){ sleep (30) response = httpRequest( url: url, httpMode: 'GET', contentType: 'APPLICATION_JSON', acceptType: 'APPLICATION_JSON', requestBody: '' ) if (response.status == 200) { // Obtiene el resultado del servicio en formato JSON jsonResponse = readJSON text: response.content } else { error "STELA No pudo ejecutar la automatización - HTTP Status: ${response.status}" } // Vuelve al inicio del loop echo ("Se consulta a STELA por el resultado") } // Se chequea el resultado switch(jsonResponse['result']) { case 2: echo ("STELA: Las automatizaciones finalizaron sin fallos."); break; case 3: error ("STELA: Las automatizaciones finalizaron con fallos."); break; default: error ("STELA: Las automatizaciones finalizaron con fallos." + jsonResponse) } } } } } } }