Welche settings.xml wird von jenkins slave verwendet?

7

Ich habe einen Jenkins-Master (der auf einer kleinen Linux-Box läuft) und einen Jenkins-Slave (der auf einer "richtigen" XP-Maschine läuft).

Ich habe beide für alle Jibs konfiguriert, die auf dem Windows XP-Slave laufen sollen.

Leider wird jedes Mal, wenn ein Build auf diesem Slave ausgeführt wird, der Build aufgrund des folgenden Fehlers fehlgeschlagen:

%Vor%

Ich weiß, dass dieser Fehler auf die schlechte Definition des Repositorys mit diesen Artefakten zurückzuführen ist, da das verwendete Repository in settings.xml definiert ist. Also, meine Frage ist ziemlich einfach: Wie kann ich definieren, welche Datei settings.xml von einem Jenkins-Slave verwendet wird?

    
Riduidel 18.10.2011, 12:26
quelle

3 Antworten

6

Wie immer war die Lösung einfacher als ich dachte.

Jenkins-Slave ist so konfiguriert, dass er vom Systembenutzer ausgeführt wird. Um meine settings.xml zu verwenden, musste ich lediglich den zugehörigen Benutzer ändern, und das Problem verschwand!

    
Riduidel 18.10.2011, 13:27
quelle
20

Maven verwendet eine globale Einstellungen und eine Benutzereinstellungen Datei. Wenn die Benutzereinstellungsdatei vorhanden ist, überschreibt sie die globale Einstellungsdatei.

Der globale Eintrag befindet sich in %M2_HOME%\conf\ , während sich der Benutzer in %HOME%\.m2\ befindet. Hier bedeutet %HOME% das Home-Verzeichnis des Benutzers, der den Jenkins-Slave ausführt.

Die einfachste Lösung, vorausgesetzt, dass es in Ihrer Situation möglich ist, besteht darin, einfach die richtige settings.xml-Datei in das Verzeichnis %HOME%\.m2\ auf dem Jenkins-Slave-Rechner zu kopieren.

Alternativ können Sie eine benutzerdefinierte settings.xml-Datei in der mvn-Befehlszeile mit der Option --settings angeben, sodass Sie die Datei an einem bekannten Speicherort ablegen können (z. B. C:\ ) und dann Jenkins die Einstellung übergeben zu Maven, etwas wie --settings C:\settings.xml .

Nebenbei ist es oft hilfreich, einen neuen Windows-Benutzer zum Ausführen des Jenkins-Slaves zu erstellen, damit Sie leicht feststellen können, wo er nach Konfigurationsdateien suchen wird.

    
Chris B 18.10.2011 13:03
quelle
1

Für mich war das die Verwendung der Variablen -Duser.home.

Ich habe das zur Arbeit gebracht! Jedoch statt Wenn ich es in den MAVEN_OPTS eintrage, habe ich es in den Jenkins-Konfigurationsfenstern als JVM-Level-Variable in meinen Webserver eingegeben.

Für mich benutze ich Glassfish auf WinTell statt Tomcat. Glassfish beginnt als Windows-Dienst. Grundsätzlich eingegeben:

JVM-Variablenname: user.home JVM-Wert: /data/maven-2.2/jenkins

Stellen Sie in diesem Verzeichnis /data/maven-2.2/jenkins sicher, dass Sie eine Kopie von haben eine gültige settings.xml mit den korrekt eingegebenen Proxy-Informationen. Das macht es mir möglich isolieren eine separate settings.xml für meine jenkins services erstellt v. anmelden interaktiv.

Eric

    
eric manley 01.05.2012 18:37
quelle

Tags und Links