Comment faire pour exécuter les tests IHM sur un jenkins windows esclave sans connexion bureau à distance?
J'ai un jenkins agent mis en place sur window 7 et jenkins serveur sur Linux. Je suis en cours d'exécution GUI tests sur les fenêtres de l'agent. Il fonctionne très bien si j'ai une connexion de bureau à distance est connecté, mais ne parvient pas autrement. J'ai trouvé ce lien, Jenkins sur Windows et GUI Tests sans RDC
Mais la solution fournie il est assez vague.. Il semble que la seule solution est de faire en quelque sorte Jenkins serveur pour une connexion bureau à distance ouverte à toutes les heures. Mais je ne peux pas trouver une option pour le faire.
Quelqu'un pourrait veuillez bien m'apprendre comment résoudre ce problème?
Beaucoup apprécié!
- Jetez un oeil à ma réponse ici: stackoverflow.com/questions/10177708/...
- À côté d'ouverture de session automatique, j'ai aussi besoin de cette stackoverflow.com/a/24820786/1184842
- Il est vrai, à chaque fois que je le RDP pour la VM, j'ai redémarrer il. Ou vous pouvez vous connecter via VNC, il n'a pas besoin de redémarrer.
Vous devez vous connecter pour publier un commentaire.
C'est la bonne réponse à la question que vous liés et il est très clair sur ce qu'il faut faire. L'ensemble de l'installation est à l'extérieur de Jenkins. Jason Swager décrite sur la façon dont il automatisée un utilisateur en se connectant à un bureau windows de la machine et ensuite, à partir de l'Jenkins esclave dans la session de l'utilisateur.
Et maintenant, étape par Étape:
1. assurez-vous d'avoir une interface graphique, evailable
Configurer un bureau standard de Windows pour la connexion d'un utilisateur spécifique automatiquement au démarrage de windows. De cette façon, personne ne doit physiquement journal dans le bureau. (voir Comment faire pour activer l'ouverture de session automatique dans Windows 7)
2. lancer Jenkins esclave
Vous avez besoin pour commencer le Jenkins esclave à l'intérieur de ce paramètre utilisateur. Sinon, le Jenkins esclaves n'ont pas accès à l'INTERFACE utilisateur Windows composants (ou en d'autres termes ne peut pas interagir avec le bureau).
De sorte que vous avez à créer une tâche planifiée et le configurer pour démarrer votre Jenkins client à l'aide de Java Web Start.
3. utiliser
Lorsque l'esclave est en ligne, vous pouvez l'utiliser pour exécuter vos tests de l'INTERFACE utilisateur.
Pour résoudre ce problème, configurer Windows d'ouverture de session Automatique comme je l'explique ici:
https://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130
Puis créez un démarrage de lot pour Jenkins esclave (le placer dans Jenkins répertoire), qui va lancer la console sur le bureau, et permettra GUI des travaux à exécuter:
(slave.jar peut être téléchargé à l'adresse http://{Votre Serveur Jenkins}:8080/jnlpJars/slave.jar)
EDIT :
Si vous avez de la noir captures d'écran (lors de l'utilisation de Sélénium par exemple), créez un fichier de commandes qui se déconnecte de Bureau à Distance, plutôt que de fermer la session RDP régulière avec les bouton X:
La chose suivante a fait le tour pour moi:
Dans Jenkins exécuter windows shell de commande:
cmdkey /generic:TERMSRV/<servername> /user:<username> /pass:<password>
mstsc /v:<servername> /w:<width> /h:<height>
cd <path to your pom.xml>
<maven command>
(par exemplemvn test -Dfiles_to_run=groupLaunch.xml
cmdkey /delete:TERMSRV/<servername>
Il crée de véritables mstsc session (Win-to-Win) avec la largeur et la hauteur spécifiées dans votre virtuel mstsc session (Jenkins-à-Win) alimenté par Jenkins.
J'ai essayé les solutions proposées ici, mais rien n'a fonctionné pour moi. À la fin, je suis venu avec une solution de contournement.
J'ai ouvert une connexion RDP pour la VM dans une autre VM (VM2).
J'ai quitté la première connexion à l'intérieur VM2 et déconnectés.
Il a travaillé, mais qui implique d'avoir deux machines virtuelles disponibles.
Vous devez toujours utiliser RDP, mais dans mon cas, on peut utiliser de bouclage de la RDP dans la même VM.
La procédure:
Maintenant, vous aurez deux Jenkins esclave pour deux comptes dans une VM
esclave 1 - compte de 1
esclave 2 - compte de 2
Permettre à plusieurs RDP suivez le guide
https://www.serverwatch.com/server-tutorials/how-to-enable-concurrent-remote-desktop-sessions-in-windows.html
De l'esclave 2(avec le compte de 2), exécutez rdp commande pour se connecter à l'esclave 1(compte 1), comme suit
Démarrer /b "" "C:\RDP\rdp.exe" /v:127.0.0.2 /domaine:\ /u:admin /p:xxxx /fullscreen /w:1920 /h:1200
127.0.0.2 est très important, c'est une connexion de bouclage pour RDP
Mettre de commande ci-dessus dans Jenkins emploi avec le nom "OpenRDP_ToVMXXX, et puis vous pouvez exécuter un test de l'esclave 1 avec une interface graphique activé, en profiter.
Que les solutions ci-dessus semble un peu exagéré, j'ai donc utilisé cette approche:
Jenkins
servicejava -jar C:\Program Files (x86)\Jenkins\jenkins.war
Pour certaines raisons, j'ai dû installer tous les plugins et tout lors du démarrage de cette façon alors je vous recommandons de créer une sauvegarde, il y a un plugin pour ça. Bonne chance. 🙂