web-dev-qa-db-fra.com

Jenkins Windows Slave Service n'interagit pas avec le bureau

J'ai suivi ce guide pour installer un esclave jenkins sur Windows 8 en tant que service:

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service#InstallingJenkinsasaWindowsservice-InstallSlaveasaWindowsservice%28require.NET2.0framework%29

Je dois exécuter un travail qui interagit avec le bureau (exécuter une application qui ouvre un navigateur, etc.). Ainsi, après avoir installé l'esclave en tant que service (exécutant jnlp téléchargé à partir du maître), j'ai changé le service "Connexion" à "Autoriser l'interaction avec l'affichage".

Pour une raison quelconque, il est uniquement possible de l'activer pour le "compte système local" même s'il est recommandé d'exécuter le service en tant qu'utilisateur spécifié, par exemple. Jenkins.

Mais rien ne se passe lorsque j'exécute le travail, le navigateur n'est pas ouvert. Si, au lieu de cela, je stoppe le service et lance simplement l'esclave via le fichier jnlp, le travail se déroule correctement: le navigateur est ouvert.

Quelqu'un a-t-il eu de la chance en interaction avec le bureau lors de l'exécution d'un esclave jenkins Windows en tant que service?

15
u123

Les services fonctionnent depuis Vista dans la session 0 et le premier utilisateur est maintenant dans la session 1. Vous ne pouvez donc plus interagir. Ceci s'appelle l'isolement de la session 0. 

Microsoft explique ceci ici et ici . Vous devez utiliser le 2e programme qui utilise IPC pour communiquer avec le service.

9
magicandre1981

Pour résoudre ce problème, définissez la connexion automatique à Windows comme expliqué ci-dessous: https://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130 # 606130

Créez ensuite un lot de démarrage pour l'esclave Jenkins (placez-le dans le répertoire Jenkins), ce qui lancera sa console sur le bureau et permettra aux tâches de l'interface graphique de s'exécuter:

Java -jar slave.jar -jnlpUrl http://{Your Jenkins Server}:8080/computer/{Your Jenkins Node}/slave-agent.jnlp

(le fichier slave.jar que vous pouvez télécharger depuis http: // {Votre serveur Jenkins}: 8080/jnlpJars/slave.jar)

EDIT: Si vous obtenez screenshots noirs (lorsque vous utilisez Selenium ou Sikuli, par exemple), créez un fichier de commandes qui déconnecte le Bureau à distance, au lieu de fermer le Session RDP avec le bouton X normal:

%windir%\system32\tscon.exe %SESSIONNAME% /dest:console 
7
Noam Manos

J'avais beaucoup de problèmes à exécuter Jenkins sous Windows avec le service. Je désactive maintenant le service et l’exécute à partir de CMD.

Alors ouvrez CMD.

cd C:\Program Files (x86)\Jenkins

Java -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar
jenkins.war --httpPort=9091
6
Ian Thompson

Mon service Jenkins fonctionne en tant qu'utilisateur "jenkins" et je n'ai fait que créer des dossiers du bureau dans: C:\Windows\system32\config\systemprofile\desktop et si Windows 64 bits également dans C:\Windows\SysWOW64\config\systemprofile\desktop - alors il fonctionne parfaitement.

0
Laurits Nielsen

Vérifiez les services (@ TestNode) et assurez-vous que le service "Détection de services interactifs" est DÉMARRÉ. Par défaut, le type de démarrage est défini sur Manuel. Vous pouvez également choisir de le définir sur automatique.

enter image description here

Une fois le service démarré, lorsque vous exécutez votre test dans le nœud Test, vous verrez quelque chose comme ce qui suit: enter image description here

Cliquez dessus et choisissez voir le message

enter image description here

Vous verrez les activités s'y dérouler. J'espère que cela aide: D

Remarque: si vous vous connectez à un autre compte et que vous ne pouvez pas afficher l'invite de détection de services interactifs, redémarrez le service.

0
cL83

Pensez à exécuter le serveur esclave Java directement au démarrage, puis à utiliser quelque chose à surveiller et à redémarrer si le serveur tombe en panne (par exemple, Kiwi Restarter ).

0

Assurez-vous que les dossiers Desktop sont créés en tant que tels: 

  • %WINDOWS%/System32/config/systemprofile/Desktop
  • %WINDOWS%/SystemWOW64/config/systemprofile/Desktop

Leur présence peut parfois être obligatoire lors de l'exécution de certains logiciels Java en tant que service.

0
ŁukaszBachman