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.

Ejecutar mintty(cygwin) de forma remota desde Jenkins.

Estoy tratando de ejecutar los comandos “configure” y “make” en la plataforma de Windows (Cygwin), desde la tubería de Jenkins, ejecutando el siguiente comando:

bat “${CYGWIN_EXECUTION} /cygdrive/c/JDKBUILD6432/configure64.sh
${env.BUILDNUMBER} ${JDK11UPATH_CYGWIN} ${params.snclabel}”

y

bat “${CYGWIN_EXECUTION} /cygdrive/c/JDKBUILD6432/make64.sh
${env.BUILDNUMBER} ${JDK11UPATH_CYGWIN} ${params.snclabel}”

donde:
CYGWIN_EXECUTION=”C:\cygwin64\bin\mintty.exe -h start /bin/bash -l -e”

y configure_64.sh contiene el siguiente script:

./configure –with-freetype=bundled
–with-tools-dir=/cygdrive/c/progra~2/micros~1/2017/Enterprise/VC/Tools/
–with-jtreg=/cygdrive/c/jtreg-5.1-b01/ –with-version-pre=$SNCMIDVAR –with-version-build=$BUILDNUMBER–with-version-opt= –with-boot-jdk=/cygdrive/c/jdk-10.0.2 –with-boot-jdk-jvmargs=”-Xmx4G -enableassertions”

y make_64.sh contiene el siguiente script:

./make clean SPEC=build/windows-x86_64-normal-server-release/spec.gmk

Cuando se desencadena desde Jenkins, la tubería de Jenkins comenzó a ejecutarse pero no esperó a que la ejecución terminara (simplemente cierra la ventana de diálogo de Cygwin, no espera a que la ejecución termine).

Por favor, indique cómo resolver para que espere a que se complete la ejecución de “./configure” (antes de continuar con la ejecución de “./make”)?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para hacer que el pipeline de Jenkins espere a que la ejecución del comando ./configure termine antes de ejecutar el comando ./make, puedes utilizar el comando wait en el pipeline.

    Modifica el script del pipeline para separar los comandos y añadir el comando wait entre ellos de la siguiente manera:

    bat "${CYGWIN_EXECTION} /cygdrive/c/JDK_BUILD_64_32/configure_64.sh ${env.BUILD_NUMBER} ${JDK11_U_PATH_CYGWIN} ${params.snclabel}"
    wait()
    bat "${CYGWIN_EXECTION} /cygdrive/c/JDK_BUILD_64_32/make_64.sh ${env.BUILD_NUMBER} ${JDK11_U_PATH_CYGWIN} ${params.snclabel}"
    

    Esto obligará al pipeline a esperar a que el primer comando termine antes de ejecutar el segundo comando.

    Además, asegúrate de que los scripts configure_64.sh y make_64.sh se encuentren en la ubicación correcta y tengan los permisos adecuados.

    Otra opción sería utilizar el operador && para encadenar los dos comandos en lugar de usar el comando wait, de la siguiente manera:

    bat "${CYGWIN_EXECTION} /cygdrive/c/JDK_BUILD_64_32/configure_64.sh ${env.BUILD_NUMBER} ${JDK11_U_PATH_CYGWIN} ${params.snclabel} && ${CYGWIN_EXECTION} /cygdrive/c/JDK_BUILD_64_32/make_64.sh ${env.BUILD_NUMBER} ${JDK11_U_PATH_CYGWIN} ${params.snclabel}"
    

    Esto ejecutará el comando make solo si el comando configure se completa satisfactoriamente.

Comments are closed.