2011-10-18 10 views
7

Mam mistrza Jenkinsa (działającego na małym pudełku z Linuksem) i niewolnika Jenkinsa (działającego na "poprawnej" maszynie XP).Który plik settings.xml jest używany przez użytkownika jenkins slave?

Skonfigurowałem dla wszystkich wysięgników uruchamianych na systemie podrzędnym systemu Windows XP.

Niestety, za każdym razem budować prowadzony jest na tej niewolnika, kompilacja nie powiedzie się z powodu następującego błędu:

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 

Znam Ten błąd jest z powodu złej definicji repozytorium zawierającego te artefakty, ponieważ używany repozytorium jest zdefiniowane w pliku settings.xml. Moje pytanie jest bardzo proste: jak zdefiniować, który plik settings.xml jest używany przez niewolnika Jenkinsa?

Odpowiedz

6

Jak zawsze, rozwiązanie było prostsze, niż myślałem, że może.

System Jenkins slave jest skonfigurowany do uruchamiania przez użytkownika systemu. W związku z tym, aby użyć mojego pliku settings.xml, musiałem jedynie zmienić powiązanego użytkownika i problem zniknął!

20

Maven używa ustawień globalnych i pliku ustawień użytkownika. Jeśli plik ustawień użytkownika istnieje, zastępuje globalny.

Globalny znajduje się w %M2_HOME%\conf\, a użytkownik jest w %HOME%\.m2\. Tutaj %HOME% oznacza katalog domowy użytkownika, który używa niewolnika Jenkins.

Najłatwiejszym rozwiązaniem jest skopiowanie prawidłowego pliku settings.xml do katalogu %HOME%\.m2\ na maszynie niewolniczej Jenkins.

Alternatywnie, można określić niestandardowy plik settings.xml w wierszu poleceń mvn używając opcji --settings, więc można umieścić plik w określonej lokalizacji (np C:\), a następnie powiedzieć Jenkins przekazać ustawienie Maven, coś w rodzaju --settings C:\settings.xml.

Na marginesie, często warto utworzyć nowego użytkownika systemu Windows, aby uruchomić urządzenie niewolnicze Jenkins, dzięki czemu można łatwo określić, gdzie będzie szukać plików konfiguracyjnych.

+1

Dzięki, ustawiam usługę slave, aby działała jako użytkownik lokalny i ustawienia.xml pod C: /users/myuser/.m2/ został ostatecznie podniesiony. Poza tym: Z domyślnym użytkownikiem systemu i bez żadnych innych ustawień używany jest plik settings.xml pod folderem instalacji maven. – Rob

1

Dla mnie to, co to działa, było użycie zmiennej -Duser.home.

Zrobiłem to, aby zadziałało! Jednak zamiast wprowadzając go do MAVEN_OPTS, na ekranach konfiguracji Jennkins wprowadziłem go jako zmienną poziomu JVM do mojego serwera WWW.

Dla mnie używam glassfish na WinTell, zamiast tomcat. Glassfish rozpoczyna się jako usługa okienna . Zasadniczo wprowadzone:

JVM zmienna name: user.home wartość JVM: /data/maven-2.2/jenkins

Następnie w tym katalogu /data/maven-2.2/jenkins upewnij się, że kopię prawidłowy plik settings.xml z poprawnym wprowadzeniem informacji o serwerze proxy. Dzięki temu mogę wyizolować osobny plik settings.xml dla moich usług usług jenkins, v. Logując się na interaktywnie.

Eric

Powiązane problemy