El trabajo de semillas no crea un MavenJob pero no se reporta ningún error

He creado un caso de prueba Junit jenkins donde se lanza una instancia de jenkins en memoria (como usamos @Rule jenkinsrule). El código del caso de prueba está disponible Aquí.. El caso de prueba creará un FreeStyleProject (= trabajo de semillas) que utilizará como script Groovy DSL un maven. groovy archivo

Pero cuando se ejecuta el caso de prueba, el siguiente mensaje se reporta durante la ejecución de la construcción de empleo. El mensaje informa ghe consecuencia de la importación/parición del ganado Job.groovy archivo como el trabajo espera que se cree un nuevo trabajo.

Legacy code started this job.  No cause information is available
Running as SYSTEM
Building in workspace /var/folders/t2/jwchtqkn5y76hrfrws7dqtqm0000gn/T/j h5344303144116520886/workspace/test0
Processing provided DSL script
ERROR: java.io.IOException: Unable to read /var/folders/t2/jwchtqkn5y76hrfrws7dqtqm0000gn/T/j h5344303144116520886/jobs/mvn-spring-boot-rest-http/config.xml
Finished: FAILURE

Y por supuesto, ningún rastro de pila del error es stdout o stderr. ¿Cómo puedo investigar el problema y arreglarlo?

Observación:

Si uso el archivo config.xml e importarlo en una instancia jenkins separada, el trabajo tuvo éxito

config.xml archivo generado, se ve bien (vs mismo config.xml archivo creado con la UI)

xml version='1.1' encoding='UTF-8'?

  false
  
  
  false
  false
  false
  false
  
  false
  
    
      mavenJob('mvn-spring-boot-rest-http') {
    description 'A Maven Job compiling the project Spring Boot Rest HTTP Example'

    parameters {
        gitParameter {
            name 'SELECTED_TAG'
            description 'The Git tag to checkout'
            type 'PT_TAG'
            defaultValue '2.3.4-2'
            branch ''
            branchFilter 'origin/(.*)'
            quickFilterEnabled false
            selectedValue 'DEFAULT'
            sortMode 'DESCENDING_SMART'
            tagFilter '*'
            useRepository '.*rest-http-example.git'
            listSize '10'
        }
    }

    scm {
        git {
            remote {
                url 'https://github.com/snowdrop/rest-http-example.git'
                // branch('$SELECTED_TAG')
                branch('2.3.4-2')
            }
        }
    }
    rootPOM 'pom.xml'
    goals 'clean install'
}
      true
      false
      false
      false
      false
      false
      false
      IGNORE
      IGNORE
      IGNORE
      JENKINS_ROOT
    
  
  
  

Muchas gracias por su ayuda.

He creado una discusión de hilo aquí también: https://groups.google.com/g/jenkinsci-users/c/mRSwARFapyA

Charles

Pregunta hecha hace 3 años, 4 meses, 28 días - Por techtactician


3 Respuestas:

  • El problema estaba relacionado con muchas dependencias desaparecidas necesarias para ejecutar el caso de prueba. Actualicé el build.gradle archivo y ahora eso funciona.

    https://github.com/ch007m/jenkins-job-dsl/blob/jenkins-2.271/build.gradle#L53-L72

    BTW, el mensaje de error reportado no estaba correlacionado en absoluto a la causa raíz y Cómo solucionar el problema. que debe mejorarse dentro del código ;-)

    Respondida el Dec 17, 2020 a las 13:39 - por debugdynamo

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando probablemente se deba a que el archivo config.xml suministrado al trabajo no se puede leer correctamente o no se puede encontrar. A continuación se presentan algunos pasos que puedes seguir para investigar y solucionar este problema:

    • Verifica la ruta del archivo `config.xml`:
    - Asegúrate de que la ruta del archivo `config.xml` especificada en tu script Groovy DSL coincida con la ubicación donde se espera que esté el archivo.
    • El mensaje de error indica que Jenkins no puede leer `/var/folders/t2/jwchtqkn5y76hrfrws7dqtqm0000gn/T/j h5344303144116520886/jobs/mvn-spring-boot-rest-http/config.xml`. Verifica si este archivo está presente en esa ubicación y si tiene los permisos adecuados para que Jenkins lo lea.
    • Verifica los permisos de lectura del archivo:
    - Asegúrate de que el usuario que ejecuta Jenkins tenga permisos para leer el archivo `config.xml`.
    • Si es necesario, cambia los permisos del archivo para que Jenkins pueda acceder a él.
    • Comprueba la validez del archivo `config.xml`:
    - Verifica que el contenido del archivo `config.xml` esté bien formado y no tenga errores de sintaxis XML.
    • Puedes intentar abrir el archivo `config.xml` en un editor de texto para asegurarte de que no haya ningún problema con la estructura del archivo.
    • Revisa la configuración del trabajo de semillas:
    - Asegúrate de que la configuración del trabajo de semillas en tu script Groovy DSL esté correcta y coincida con tus expectativas.
    • Verifica que no haya ningún error en la definición del trabajo de semillas que esté causando el problema al generar el archivo `config.xml`.

    Siguiendo estos pasos, podrás investigar y resolver el problema con la lectura del archivo config.xml durante la ejecución de tu trabajo de semillas en Jenkins. ¡Espero que esta información te sea útil para solucionar el inconveniente!

    Respondida el Dec 18, 2020 a las 13:40 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Versión corta:

    La causa probable es que el trabajo de semillas no tiene intención de crear un MavenJob. El Groovy DSL que se ejecuta desde el trabajo de semillas crea el MavenJob.

    Versión larga:

    El caso de prueba crea un FreeStyleProject (trabajo de semillas) y utiliza el archivo Groovy DSL mavenJob.groovy como script DSL. El archivo mavenJob.groovy crea un MavenJob.

    Cuando el trabajo de semillas se ejecuta, importa el archivo mavenJob.groovy como parte del proceso de construcción del trabajo. Sin embargo, el trabajo de semillas espera crear un FreeStyleProject, no un MavenJob.

    Como resultado, el trabajo de semillas no puede comprender el archivo mavenJob.groovy y genera un error de E/S al intentar leer el archivo config.xml generado por el archivo DSL.

    Cómo solucionar el problema:

    Hay dos formas de resolver este problema:

    Opción 1: Cambia el trabajo de semillas a un MavenJob para que pueda comprender el archivo mavenJob.groovy. Opción 2: Modifica el archivo mavenJob.groovy para crear un FreeStyleProject en lugar de un MavenJob.

    Solución recomendada:

    Se recomienda utilizar la Opción 1: cambiar el trabajo de semillas a un MavenJob. Esto asegurará que el trabajo de semillas pueda comprender el archivo mavenJob.groovy y crear correctamente el MavenJob.

    Pasos para la Opción 1:

    • Cambia el tipo de trabajo de semillas de FreeStyleProject a MavenJob.
    • Ejecuta el caso de prueba.

    Recomendaciones adicionales:

    Verifica el registro de Jenkins para obtener más información sobre el error. Asegúrate de que se instalen los complementos necesarios para ejecutar los archivos DSL (por ejemplo, el complemento job-dsl para el archivo mavenJob.groovy). * Utiliza el modo de depuración para rastrear el proceso de construcción del trabajo de semillas y ver dónde se produce el error.

    Respondida el Dec 18, 2020 a las 13:50 - por Gemini

    Votos positivos: 0 | Votos negativos: 0