it-swarm.com.de

Jenkins Windows Slave-Dienst interagiert nicht mit dem Desktop

Ich habe diese Anleitung befolgt, um einen Jenkins-Slave unter Windows 8 als Dienst zu installieren:

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

Ich muss einen Job ausführen, der mit dem Desktop interagiert (eine Anwendung ausführen, die einen Browser öffnet usw.). Nachdem ich den Slave als Dienst installiert habe (mit jnlp, das vom Master heruntergeladen wurde), habe ich den Dienst "Anmelden" in "Interaktion mit Anzeige zulassen" geändert.

Aus irgendeinem Grund ist es nur möglich, dies für das "lokale Systemkonto" zu aktivieren, obwohl empfohlen wird, den Dienst als angegebener Benutzer auszuführen, z. Jenkins.

Beim Ausführen des Jobs passiert jedoch nichts. Der Browser wird nicht geöffnet. Wenn ich stattdessen den Dienst stoppe und den Slave einfach über die JNLP-Datei starte, läuft der Job einwandfrei - der Browser wird geöffnet.

Hat jemand Glück gehabt, mit dem Desktop zu interagieren, als er einen Jenkins-Windows-Slave als Dienst ausführte?

15
u123

Dienste werden seit Vista in Sitzung 0 ausgeführt und der erste Benutzer befindet sich jetzt in Sitzung 1. Sie können also nicht mehr interagieren. Dies wird als Session 0-Isolation bezeichnet.

Microsoft erklärt dies hier und hier . Sie müssen 2nd Program verwenden, das IPC verwendet, um mit dem Service zu kommunizieren.

9
magicandre1981

Um dieses Problem zu lösen, legen Sie die automatische Windows-Anmeldung wie hier beschrieben fest: https://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130

Erstellen Sie dann einen Start-Batch für den Jenkins-Slave (legen Sie ihn im Jenkins-Verzeichnis ab), der die Konsole auf dem Desktop startet und die Ausführung von GUI-Jobs ermöglicht:

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

(die slave.jar können Sie von http: // {Your Jenkins Server} herunterladen: 8080/jnlpJars/slave.jar)

BEARBEITEN: Wenn Sie schwarze Screenshots erhalten (z. B. bei Verwendung von Selen oder Sikuli), erstellen Sie eine Batchdatei, mit der die Remotedesktopverbindung getrennt wird, anstatt die RDP-Sitzung mit der regulären zu schließen X-Taste:

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

Ich hatte viele Probleme beim Ausführen von Jenkins unter Windows mit dem Dienst. Stattdessen deaktiviere ich jetzt den Dienst und starte ihn über CMD.

Also CMD öffnen.

cd C:\Program Files (x86)\Jenkins

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

Mein Jenkins-Dienst wird als Benutzer "jenkins" ausgeführt und alles, was ich getan habe, war, Desktop-Ordner zu erstellen in: C:\Windows\system32\config\systemprofile\desktop und bei 64-Bit-Windows auch in C:\Windows\SysWOW64\config\systemprofile\desktop - dann läuft es einwandfrei.

0
Laurits Nielsen

Überprüfen Sie die Dienste (@ TestNode), und vergewissern Sie sich, dass der Dienst "Interactive Services Detection" (Erkennung interaktiver Dienste) gestartet ist. Standardmäßig ist der Starttyp auf "Manual" (Manuell) eingestellt. Möglicherweise möchten Sie ihn auch auf "Automatic" (Automatisch) einstellen.

enter image description here

Nach dem Start des Dienstes wird beim Ausführen des Tests im Testknoten Folgendes angezeigt: enter image description here

Klicken Sie darauf und wählen Sie die Option, um die Nachricht anzuzeigen

enter image description here

Sie werden sehen, welche Aktivitäten dort stattfinden. Hoffe das hilft: D

Hinweis: Wenn Sie sich mit einem anderen Konto anmelden und die Eingabeaufforderung zur Erkennung interaktiver Dienste nicht anzeigen können, starten Sie den Dienst erneut.

0
cL83

Erwägen Sie, den Java-Slave-Server direkt beim Start auszuführen und dann etwas zum Überwachen und Neustarten zu verwenden, falls der Server ausfällt (z. B. Kiwi Restarter ).

Stellen Sie sicher, dass die Ordner Desktop wie folgt erstellt werden:

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

Das Vorhandensein dieser kann manchmal obligatorisch sein, wenn Java-Software als Dienst ausgeführt wird.

0
ŁukaszBachman