J'ai un serveur d'intégration continue (Jenkins) qui construit mon code (vérifie les erreurs de compilation) et exécute des tests puis déploie les fichiers sur un serveur distant (pas un fichier war, mais la structure de fichier réelle) Je le fais avec un Plugin Jenkins qui me permet de transférer des fichiers via samba, il le fait tous les soirs.
Maintenant, ce que je dois faire, c'est exécuter une commande ant sur le serveur distant. Et après cela, je dois démarrer le serveur d'applications sur le serveur distant, le serveur d'applications est démarré en exécutant un fichier .bat à partir de la ligne de commande.
Je ne sais pas du tout comment y parvenir, je sais que Jenkins est capable d'exécuter des commandes batch, mais comment les faire fonctionner dans le contexte du serveur et non dans le contexte du serveur de build?
Si Jenkins sur Windows, à distance sur * nix, utilisez plink.exe
(qui est essentiellement la ligne de commande PuTTY
)
Si Jenkins sous Windows, distant sur Windows, utilisez psexec.exe
Si Jenkins sur * nix, à distance sur * nix, utilisez ssh
Si Jenkins sur * nix, distant sur Windows, (mise à jour 2015-01) Ansible http://docs.ansible.com/intro_windows.html prend en charge l'appel de commandes Windows, par exemple powershell, depuis unix/machine Linux, https://github.com/ansible/ansible-examples/blob/master/windows/run-powershell.yml
Dites-moi quels systèmes d'exploitation sont impliqués (à la fois sur Jenkins et à distance), et je flasherai plus loin.
Modifier:
La page de téléchargement de psexec.exe
répertorie toutes les options de ligne de commande. Vous voudrez quelque chose comme:
psexec \\remotecomputername -u remoteusername -p remotepassword cmd /c <your commands here>
Remplacer <your commands here>
avec les commandes réelles comme vous les exécuteriez à partir de l'invite de commandes.
Notez que psexec
doit d'abord installer un service et que les informations d'identification à distance d'invite de commande/administrateur requises pour le faire sont requises.
Vous devez également exécuter psexec -accepteula
une fois pour accepter l'invite du CLUF.
Suite à la réponse de Slav ci-dessus, voici une solution plus simple pour Jenkins (* nix) à distance (windows):
Remarques :
J'ai fini par adopter une approche différente après avoir essayé psexec.exe pendant un certain temps.
Psexec.exe et la copie de fichiers sur le réseau étaient un peu lents et instables, d'autant plus que le domaine sur lequel je travaille a une politique de changement de mot de passe tous les mois (ce qui a cassé la construction).
Au final, j'ai opté pour l'approche maître/esclave, qui est plus rapide et plus stable. Étant donné que je n'ai pas à utiliser psexec.exe et que je n'ai pas à copier de fichiers sur le réseau.