auto start stop tomcat distant avant de redéployer la guerre par jenkins (déploiement du plugin)

jenkins construit actuellement mon projet et à la fin l’artefact est déployé sur un tomcat distant via le plugin jenkins deploy. le problème est que, après plusieurs redéploiements, ce processus échoue (parfois, tomcat se bloque ou le déploiement (dé) échoue). dans tous les cas, l’arrêt de tomcat et le retrait du déploiement manuel vous aident.

Existe-t-il un moyen d’arrêter tomcat avant de générer / déployer, de supprimer l’ancienne war et appfolder et de redémarrer tomcat avant que le plug-in ne souhaite déployer l’artefact?

merci d’avance

Vous pouvez écrire un fichier batch qui fait tout ce qui est mentionné:

  • arrêter Tomcat
  • supprimer des fichiers de guerre
  • recommencer tomcat

Vous pouvez ensuite append une nouvelle tâche de pré / post-construction dans la configuration du travail en tant qu’exécution par lot et la diriger simplement pour exécuter votre fichier de commandes.

Ajout: Vous pouvez utiliser PsExec – http://technet.microsoft.com/en-us/sysinternals/bb897553 Il vous permet d’exécuter des processus à distance. Placez batch sur la machine distante et local en utilisant Jenkins exécutez sth comme ceci: PsExec.exe \ xx.xx.xx C: \ MyScript.bat

un ajout à la réponse acceptée: il est important de réacheminer la sortie de sortie et d’erreur de l’appel PsExec (cela m’a pris 2 jours de débogage). Voir http://jenkins.361315.n4.nabble.com/remotely-executing-commands-td3476417.html

il semble que si elle est appelée depuis java (comme jenkins / tomcat) ou .net, PsExec se bloque ou se ferme avec une erreur. donc l’appel devrait ressembler à:

c:\someBatchWithPsExec.bat >>log.txt>&1 

ou explicitement à chaque appel:

PsExec.exe -u [domaine \ remoteuser] -p [mot de passe] / accepteula \ remoteMachine net [arrêter | démarrer] Tomcat7 >> log.txt> & 1

Je suppose que si jenkins fonctionne avec domain \ user vous n’avez pas à le mentionner dans la commande? (juste essayé mais ça n’a pas fonctionné – les commandes net échouent)