2011-10-18 13 views
7

Ho un master Jenkins (in esecuzione su una piccola macchina Linux) e uno schiavo Jenkins (in esecuzione su una macchina XP "corretta").Quale settings.xml è usato da jenkins slave?

Ho configurato entrambi per tutti i jib da eseguire sullo slave di Windows XP.

Purtroppo, ogni volta che un build è eseguito su quello schiavo, la build non riesce a causa del seguente errore:

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 [email protected]: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 

So che questo errore è dovuto alla cattiva definizione di repository contenente quei manufatti, perché usato il repository è definito in settings.xml. Quindi, la mia domanda è abbastanza semplice: come posso definire quale file settings.xml è usato da uno schiavo Jenkins?

risposta

6

Come sempre, la soluzione era più semplice di quanto pensassi.

Lo slave Jenkins è configurato per essere eseguito dall'utente del sistema. Di conseguenza, per poter usare my settings.xml, tutto ciò che dovevo fare era cambiare il suo utente associato, e il problema spariva!

20

Maven utilizza impostazioni globali e un file di impostazioni utente. Se il file delle impostazioni utente esiste, sovrascrive quello globale.

Quello globale si trova in %M2_HOME%\conf\, mentre l'utente è in %HOME%\.m2\. Qui %HOME% indica la directory home dell'utente che sta eseguendo lo slave Jenkins.

Quindi la soluzione più semplice, supponendo che sia possibile nella situazione, è copiare semplicemente il file settings.xml corretto nella directory %HOME%\.m2\ sullo slave di Jenkins.

In alternativa, è possibile specificare un file settings.xml personalizzato sulla riga di comando mvn utilizzando l'opzione --settings, così si potrebbe mettere il file in un percorso noto (ad esempio C:\) e poi dire Jenkins per passare l'impostazione su Maven, qualcosa come --settings C:\settings.xml.

Per inciso, è spesso utile creare un nuovo utente Windows per eseguire lo slave Jenkins, in modo da poter facilmente indicare dove cercherà i file di configurazione.

+1

Grazie, ho impostato il servizio slave per l'esecuzione come utente locale e le impostazioni.xml sotto C: /users/myuser/.m2/ è stato finalmente raccolto. Inoltre: con l'utente di sistema predefinito e nessun'altra impostazione, viene utilizzato il file settings.xml nella cartella di installazione di Maven. – Rob

1

Per me quello che ha funzionato è stato utilizzare la variabile -Duser.home.

Ho fatto in modo che funzionasse! Tuttavia, invece di inserendolo in MAVEN_OPTS, nelle schermate di configurazione jenkins, l'ho inserito come variabile di livello JVM sul mio server web.

Per me sto utilizzando glassfish su WinTell, invece di tomcat. Glassfish inizia come un servizio Windows . In sostanza è entrato:

JVM nome di variabile: user.home valore JVM: /data/maven-2.2/jenkins

Poi, in questa directory /data/maven-2.2/jenkins assicuratevi di avere una copia di un settings.xml valido con le informazioni sul proxy inserite correttamente. In questo modo mi consente di isolare un file settings.xml separato per i miei build di servizi jenkins v. Loggandoti su in modo interattivo.

Eric

Problemi correlati