web-dev-qa-db-fra.com

Jenkins déploie automatiquement Tomcat 7

Nous essayons de déployer un fichier de guerre avec Jenkins, mais rien ne semble se produire.

Le projet est construit avec succès et nous utilisons le plugin de déploiement Jenkins. Il est configuré avec les options suivantes:

auto deploy plugin

Les étapes de publication sont définies sur "exécuter indépendamment du résultat de la construction".

J'ai vérifié que les informations d'identification sont correctes, car je peux accéder à la page du gestionnaire dans mon navigateur.

Voici la dernière partie que Jenkins (Maven) sort:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:24.506s
[INFO] Finished at: Tue Feb 14 12:10:45 UTC 2012
[INFO] Final Memory: 22M/52M
[INFO] ------------------------------------------------------------------------
channel stopped
Finished: SUCCESS

Je peux également changer le fichier WAR/EAR en quelque chose qui n'existe pas, et cela ne me donnera pas d'erreurs, ce qui est plutôt étrange. Qu'est-ce que je fais mal ici?

57
whirlwin

J'avais le même problème, et dans mon cas, le chemin (relatif) vers le fichier WAR était incorrect. Apparemment, si vous ne l'avez pas exactement correct (il doit être relatif à la racine de l'espace de travail), le plugin de déploiement échouera silencieusement. Dans mon cas, le chemin était:

cible/n'importe quoi.war

Une fois que cela a été corrigé, j'ai rencontré un problème différent en ce que le plugin s'attend à se connecter à la version gestionnaire/texte de Tomcat Manager, plutôt qu'à la version gestionnaire/html que je configure habituellement par défaut. Vous aurez besoin d'une ligne dans votre fichier Tomcat-users.xml comme celle-ci:

<user username = "Tomcat" password = "crayon" roles = "manager-script" />

(Ceci s'ajoute au rôle "manager-gui" que vous avez probablement déjà configuré.)

Une fois ces modifications apportées, la construction et le déploiement ont très bien fonctionné.

105
Bill Clark

J'utilise le Hudson Post Build Task plugin pour exécuter une curl contre l'API/manager/text

Les plugins mentionnés peuvent être sélectionnés et installés dans la liste des plugins disponibles dans la configuration Jenkins.

Une fois le plugin installé, il vous suffit d'activer la "Tâche de post-génération" et d'ajouter la ligne suivante:

curl -T - -u user:pass 'http://<Tomcat-Host>/manager/text/deploy?update=true&path=/<yourpath>' < <path_to_war_file>

Par exemple:

curl -T - -u manager:123456 'http://localhost:8080/manager/text/deploy?update=true&path=/slim' < /target/dist/slim.war

Vous pouvez également utiliser wget , mais avec la commande ci-dessus, vous enregistrez la sortie et voyez s'il y a eu un problème avec le déploiement.


Voici documentation relative au service /manager/text

8
German Attanasio

Hm avez-vous utilisé Cargo plugin? Eh bien, j'avais aussi la même configuration que toi, Jenkins, maven et Tomcat. Mais quand j'ai eu besoin de déployer, j'utilisais simplement ce plugin. Cela fait un moment en fait, mais dans Jenkins, vous avez pu entrer des lignes de commande à droite? Comme mvn clean install? Donc, ce que vous pouvez faire est simplement de configurer votre plugin pom for Cargo, puis ajoutez cette ligne à votre Jenkins:

mvn cargo:deploy -Pintegration

De cette façon, j'ai pu nettoyer quotidiennement mes builds et les déployer sur Tomcat. Ensuite, je faisais mes tests de repos.

1
anvarik

Pour ce que ça vaut, la dernière version du plugin Deploy pour Jenkins ne semble avoir besoin que de l'URL de base. Donc, pour moi, c'était http://blah.com:808

Avant cela, j'avais essayé un hôte d'autres options, y compris Host-manager/html, Host-manager/text

1
AHungerArtist

En supposant que Jenkins trouve votre pom.xml à compiler. Définissez vos objectifs et options dans votre configuration Jenkins sur package de compilation. Jenkins tentera alors de trouver votre fichier de guerre et de le déployer. Bonne chance.

0
Queso

J'ai essayé d'utiliser la solution de target/something.war mais ça ne marche pas alors j'ai essayé d'utiliser * /. War et c'est du travail

vous pouvez voir que sur jenkins le guide définitif FR Vous devez spécifier où trouver les fichiers que vous voulez dans l'espace de travail de l'autre travail de construction, et où Jenkins doit les placer dans l'espace de travail de votre projet actuel. Cela peut être une expression régulière flexible (telle que * /. War , pour tout fichier WAR produit par la construction travail), ou il peut être beaucoup plus précis (comme gameoflife-web/target/gameoflife.war).

ou sur Déployer sur Tomcat avec le plug-in DEPLOY

0
nizar ouerghi

conserver les rôles manager-gui, admin-gui pour l'utilisateur ayant configuré la page Jenkins

exemple:-

 <Tomcat-users>

   <user username="uname" password="pword" roles="manager-gui,admin-gui"/>

 </Tomcat-users>
0
Venky Vungarala