es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer una llamada a una API REST desde el pipeline de Jenkins.

Estoy tratando de realizar una llamada a la API REST desde el pipeline de Jenkins una vez que se complete el trabajo de construcción. Como soy nuevo en el contenido, no puedo completar la construcción con mi script a continuación:

pipeline {
    agent any
    stages {
        stage('BUILD') {
            steps {
                echo 'Demo Staging Build Running'
            }
        }
    }
    post { 
        always { 
            echo 'Demo Staging Build Completed'
            echo "Resultado de la construcción: ${currentBuild.result}"
            echo "URL de la construcción: ${env.BUILD_URL}"
            def response = httpRequest acceptType: 'APPLICATION_JSON', httpMode: 'GET', url: 'http://localhost:9091/demo/jenkins-res'
            echo "Estado: ${response.status}"
        }
    }
}

Al ejecutar el script, obtengo el siguiente error:

Running in Durability level: MAX_SURVIVABILITY
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 27: Se esperaba un paso @ línea 27, columna 13.
               def response = httpRequest acceptType: 'APPLICATION_JSON', httpMode: 'GET', url: 'http://localhost:9091/ucreator/jenkins-res'
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error que estás experimentando parece estar relacionado con la sintaxis de Groovy. Necesitas usar un paso para hacer una solicitud HTTP. Para solucionar este problema, reemplaza la siguiente línea:

    def response = httpRequest acceptType: 'APPLICATION_JSON', httpMode: 'GET', url: 'http://localhost:9091/demo/jenkins-res'
    

    con lo siguiente:

    step([$class: 'HttpOperation', acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', url: 'http://localhost:9091/demo/jenkins-res'])
    

    Esto utilizará el paso HttpOperation proporcionado por el complemento Jenkins HTTP Request para hacer la solicitud HTTP GET.

    El script de pipeline actualizado debería lucir así:

    pipeline {
        agent any
        stages {
            stage('BUILD') {
                steps {
                    echo 'Demo Staging Build Running'
                }
            }
        }
        post { 
            always { 
                echo 'Demo Staging Build Completed'
                echo "Build Result: ${currentBuild.result}"
                echo "Build Url: ${env.BUILD_URL}"
                step([$class: 'HttpOperation', acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', url: 'http://localhost:9091/demo/jenkins-res'])
            }
        }
    }
    

    Con estos cambios, tu pipeline debería poder realizar la llamada a la API REST una vez que se haya completado el trabajo de construcción.

Comments are closed.