Comment déployer L'application SpringBoot Maven avec Jenkins?
j'ai une application de démarrage à ressort qui fonctionne sur un conteneur Tomcat servlet intégré mvn spring-boot:run
. Et je ne veux pas déployer le Projet Comme guerre séparée pour Tomcat autonome.
chaque fois que je pousse le code à BitBucket/Github, un crochet court et déclenche le travail de Jenkins (court sur Amazon EC2) pour déployer l'application.
Le Jenkins a un post-construction de l'action: mvn spring-boot:run
, le problème est que le travail est suspendu lorsque l'action post build est terminée.
Il devrait y être une autre façon de le faire. Toute aide serait appréciée.
4 réponses
Le problème est que Jenkins ne gère pas de frai de l'enfant processus de builds très bien. Contournement suggéré par @Steve dans le commentaire ( | grep $service > /dev/null then sudo service myapp stop sudo unlink /etc/init.d/myapp sudo chmod +x /path/to/your/myapp.jar sudo ln -s /path/to/your/myapp.jar /etc/init.d/myapp sudo service myapp start else sudo chmod +x /path/to/your/myapp.jar sudo ln -s /path/to/your/myapp.jar /etc/init.d/myapp sudo service myapp start fi
Enregistrer et exécuter votre travail, le service doit démarrer automatiquement.
nohup
et at now + 1 minutes
ne fonctionne pas pour moi.
Comme Jenkins tuait le processus en arrière-plan, j'ai veillé à ce que le processus ne soit pas tué en mettant un faux BUILD_ID à cette tâche de Jenkins. Voici à quoi ressemble la tâche shell de Jenkins Execute:
BUILD_ID=do_not_kill_me
java -jar -Dserver.port=8053 /root/Deployments/my_application.war &
exit
tel que discuté ici.