Teamcity powershell coureur d'exécuter à distance des commandes sur le serveur
J'ai un étrange problème où TeamCity se bloque à chaque fois que j'essaie de faire un appel à distance pour l'un de nos serveurs de test.
Actuellement les étapes de génération sont:
- Fichiers de modèle pour
- Compiler du code en
- Cadre du projet de
- Envoyer des colis pour tester les serveurs
- Décompressez le paquet sur des serveurs de test
Maintenant, tout fonctionne bien jusqu'à la dernière étape, décompressez le package sur le serveur distant. Maintenant, je voulais juste lancer une commande powershell pour se connecter et exécuter les commandes, puis sur quitter. Tout cela fonctionne très bien si je ont été à l'aide de powershell à partir du bureau à distance, et l'identification de l'utilisateur fournies sont correctes.
Un exemple de ce qui est en cours d'exécution est ci-dessous:
$password = ConvertTo-SecureString "%PasswordVar%" -AsPlainText -Force
$credentials = New-Object System.Manager.Automation.PsCredential("%UsernameVar%", $password)
etsn -computername %TestServer1Var% -Credential $credentials
Lorsque cela s'appelle TeamCity se bloque, il doit être arrêtée manuellement ou il va rester sur cette étape sur l'agent pour toujours. J'ai essayé de ne pas utiliser les informations d'identification, j'ai essayé de ne pas utiliser etsn et en utilisant le nom de commande complet, également essayé d'autres de la commande à distance des méthodes, rien ne semble fonctionner.
Donc, il y a un moyen d'obtenir de TeamCity pour exécuter les commandes? ou trouver la cause de ce processus cette étape indefinately?
- Avez-vous essayé
AllowRedirection
paramètres? Ce sera la cause de votre script pour enregistrer les détails de la commande que vous voulez voir dans une console interactive. - Nan permettra d'ajouter cet argument à la commande dès maintenant et voyez si elle donne plus d'infos
- Ajouté le paramètre à l'appel, mais il reste juste se bloque, le son été sur la dernière marche de 10 minutes maintenant, sans me donner plus de commentaires.
- Hmm - je ne suis pas sûr, mais ça pourrait être un problème de permission? Je ne pense pas que estn nécessite le privilège Admin, mais je peux me tromper (pas sur windows pour le moment).
Vous devez vous connecter pour publier un commentaire.
C'était un mélange de petites questions, pour 1 l'utilisateur lorsqu'il est interrogé par l'équipe de la ville n'était pas de résoudre le domaine correctement de sorte que ce qui doit être ajouté au nom d'utilisateur
some-user@some-domain
. Il y avait aussi un problème, car il y avait une sorte de limite de connexion qui a été frappé lors de la PSSESSION de connexion, cependant si j'ai changé d'Invoquer la Commande avec un bloc de script il a bien fonctionné.Si ça aide quelqu'un ici est la commande que j'ai fini avec pour décompresser un fichier distant, à l'aide de 7-zip en ligne de commande comme la solution native semble ne jamais fonctionner.
Une chose à retenir est que le nom d'utilisateur contient le domaine énumérés ci-dessus, aussi les magic quotes sont nécessaires pour permettre le bloc de script pour être répartis sur des lignes ainsi que le point-virgule pour indiquer les tâches doivent être exécutées.
Invoke-Command
fonctionne bien que si le script que vous avez exécuté sur le serveur est courte et il faut attendre la fin de l'exécution.Mon problème était que je voulais commencer un service sur le serveur distant et connectez-vous les choses dans le serveur et laisser teamcity construire pour poursuivre l'exécution.
Avec
Invoke-Command
, teamcity fait exécuter à distance du processus, mais attendre pour que le processus de finition n retour. Si vous êtes à la recherche de quelque chose qui invoque un long processus en cours d'exécution sur le serveur, et l'oublie, essayez ceci:Cette solution qui a le mieux fonctionné pour moi:
1) Placez le script à exécuter à distance, dans un fichier sur le serveur.. disons de démarrage.chauve-souris
Ce exécute essentiellement un autre script powershell situé dans le serveur web.
Assurez-vous qu'il y a un teamcity étape de génération de déployer ces fichiers vers le serveur Web.
2) Créer un teamcity Étape de génération d'exécuter un fichier de script powershell
Exemple de Commande Powershell pour être exécuté par Teamcity:
Où APP_HOME est le chemin Absolu vers le dossier (sur la télécommande sérères) où votre application web est déployé.
C'est à ce sujet. De cette façon, vous pouvez même exécuter les services et les processus à distance ne sera pas tué et vous permet de continuer avec la construction de la chaîne.