Pregunta

Tengo un maestro de Jenkins (que se ejecuta en una pequeña caja de Linux) y un esclavo de Jenkins (que se ejecuta en una máquina XP "correcta").

He configurado ambos para que todos los JIB se ejecuten en el esclavo de Windows XP.

Desafortunadamente, cada vez que se ejecuta una construcción en ese esclavo, la compilación falla debido al siguiente error:

ERROR: Ignore Problem expanding maven opts macros org.jenkinsci.plugins.tokenmacro.TokenMacro
Found mavenVersion 3.0.3 from file jar:file:/E:/java-ext/apache-maven-3.0.3/lib/maven-core-3.0.3.jar!/META-INF/maven/org.apache.maven/maven-core/pom.properties
Parsing POMs
ERROR: Echec à la lecture des POMs
hudson.util.IOException2: remote file operation failed: C:\hudson\workspace\Autocat at hudson.remoting.Channel@ee5bc4:ndx-PC-winXP
    at hudson.FilePath.act(FilePath.java:752)
    at hudson.FilePath.act(FilePath.java:738)
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.parsePoms(MavenModuleSetBuild.java:817)
    at hudson.maven.MavenModuleSetBuild$RunnerImpl.doRun(MavenModuleSetBuild.java:617)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:429)
    at hudson.model.Run.run(Run.java:1374)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:467)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:145)
Caused by: hudson.remoting.ProxyException: hudson.maven.MavenModuleSetBuild$MavenExecutionException: org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Failure to find fr.perigee.java:java-parent:pom:0.0.6 in http://tinkerpop.com/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of tinkerpop has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 3, column 10

Sé que este error se debe a la mala definición de repositorio que contiene esos artefactos, porque el repositorio usado se define en settings.xml. Entonces, mi pregunta es bastante simple: ¿cómo puedo definir qué esclavo de Jenkins utiliza el archivo de configuración.xml?

¿Fue útil?

Solución 2

Como siempre, la solución era más simple de lo que pensaba que podría.

Jenkins Slave está configurado para ser ejecutado por el usuario del sistema. Como consecuencia, para usar mi configuración.xml, todo lo que tenía que hacer era cambiar su usuario asociado, ¡y el problema desapareció!

Otros consejos

Maven utiliza una configuración global y un archivo de configuración de usuario. Si el archivo de configuración del usuario existe, anula el global.

El global se encuentra en %M2_HOME%\conf\, mientras el usuario está en %HOME%\.m2\. Aquí %HOME% significa el directorio de inicio de cualquier usuario que esté ejecutando el esclavo de Jenkins.

Por lo tanto, la solución más fácil, suponiendo que sea posible en su situación, es simplemente copiar el archivo de configuración correcta.xml al %HOME%\.m2\ Directorio en la máquina esclava de Jenkins.

Alternativamente, puede especificar un archivo Setting Settings.xml en la línea de comandos MVN usando la --settings opción, por lo que podría poner el archivo en una ubicación conocida (por ejemplo, C:\) y luego dígale a Jenkins que pase el escenario a Maven, algo como --settings C:\settings.xml.

Como aparte, a menudo es útil crear un nuevo usuario de Windows para ejecutar el esclavo de Jenkins, para que pueda saber fácilmente dónde buscará archivos de configuración.

Para mí, lo que hizo que esto funcionara fue usar la variable -duser.

¡Tenía esto al trabajo! Sin embargo, en lugar de ingresarlo en el Maven_opts, en las pantallas Configurar Jenkins, lo ingresé como una variable de nivel JVM en mi servidor web.

Para mí estoy usando peces de vidrio en Wintell, en lugar de Tomcat. Glassfish comienza como un servicio de ventanas. Básicamente ingresado:

JVM Nombre de la variable: user.home JVM valor: /data/maven-2.2/jenkins

Luego, en este directorio /data/maven-2.2/jenkins, asegúrese de tener una copia de una configuración válida.xml con la información proxy ingresada correctamente. Hacerlo me permite aislar una configuración separada.xml para mis servicios de Jenkins Builds v. Iniciar sesión interactivamente.

Eric

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top