Java Wie muss Jenkins richtig konfiguriert werden?

mmtzh

Cadet 3rd Year
Registriert
Nov. 2014
Beiträge
62
Hey,

ich habe eine Java-Spring-Boot Anwendung entwickelt und in einem SVN-Repository gespeichert.
Ich möchte nun ein Jenkins Job einrichten, der mir die Anwendung baut.

Ich habe bisher in Jenkins einen "New Item" angelegt.
Meine SVN-Daten eingegeben und unter dem Punkt "Build" habe ich zweil Shell-Scripte erstellt.
Das eine Shell-Script führt ein "mvn clean install" aus.
Das zweite Shell Script ein "mvn spring-boot:run"

Meine Anwendung wird nun korrekt ausgecheckt.
Wenn ich das zweite Shell-Script weg lasse läuft der Jenkins job auch durch. Er wird jedoch nie grün oder gelb sondern bleibt immer blau.
Mit dem zweiten Shell-Script wird mein SpringBoot-Service sogar gestartet - so wie ich es will.
Allerdings wartet Jenkins bis der Service wieder beendet wird und der Service läuft weiter bis man ihn beendet. D.h. Jenkins wird nie fertig damit.

Wie muss ich das ganze einrichten, sodass es korrekt funktioniert?
 
Lass den zweiten Befehl weg. Es sollte ohne dem "grün" werden.
Versuche mal beim ersten Befehl "mvn clean deploy".
 
Mit dem clean deploy funktioniert es jetzt

allerdings läuft danach meine Spring Boot anwendung noch nicht.

Was muss ich tun, dass mit dem deploy die Anwendung auch tatsächlich im Browser aufgerufen werden kann?
 
Zuletzt bearbeitet:
Wir haben das hier in der Firma nicht automatisiert, daher weiß ich es nicht.
Evtl. geht es über ein Plugin, welches du über Post-Build-Aktionen aufrufst. Vielleicht kannst du damit einfach das erzeugte war-file einfach in ein linux-share kopieren, auf welchem ein tomcat läuft und dann automatisch deployed.

Sonst such einfach mal nach "continuous integration" bzw. "ci" und Jenkins bei google.
 
mvn deploy ist nicht zum Deployment einer Anwendung gedacht, sondern zum Hochladen von Build-Artefakten (in dem Fall das Spring Boot JAR) in ein Artefakt-Repo wie Nexus, Artifactory, usw.

Wohin soll Jenkins die Anwendung auch deployen? Neben sich selbst? Ergibt keinen Sinn.

Falls die Anwendung für integration tests temporär hochgefahren werden soll, gibt es dafür andere Maven-Plugins, die das bewerkstelligen.

P.S.: es gibt für Jenkins ein Maven-Plugin. Das würde ich eher benutzen, als da mit dem Shell-Task zu fummeln.
 
Zuletzt bearbeitet:
Vielen Dank schonmal für die Antwort!

Wohin soll Jenkins die Anwendung auch deployen? Neben sich selbst?

Bei diesem Satz fällt mir ein, dass ich evtl. erwähnen sollte, dass ich alles auf einem Server laufen lassen möchte.
Also ich habe physikalisch keinen extra Buildserver. Sogesehen soll Jenkinsn die Anwendung schon neben sich selbst deployen.
Oder hab ich da was falsch verstanden?

Welches Maven-Plugin meinst du denn? Mir ist aufgefallen, dass es da einige gibt
 
Dein Problem liegt übrigens mMn daran, dass Jenkins den Build Vorgang erst beendet, wenn alle Prozesse die innerhalb des Builds gestartet wurden auch beendet sind. Da du aber mit spring-boot:run einen dauerhaften process startest, wird der Job nicht beendet. Schau dir mal dieses Plugin an http://docs.spring.io/spring-boot/docs/current/maven-plugin/run-mojo.html
Habe es selber noch nicht verwendet, aber hört sich erstmal nach dem an was du brauchst
 
Zurück
Oben