jenkins / hudson: okna CMD partii nie są widoczne, gdy Slave działa jako usługa systemu Windows

1

Uruchomię niewolników Jenkinsa jako usługę systemu Windows, która następnie uruchomi łańcuch wywołań (na przykład):

Slave.exe-> ant-> cmd batch-> notepad.exe

Problem polega na tym, że „notepad.exe” nie jest widoczny, widzę go w menedżerze zadań, ale nie pokazuje interfejsu użytkownika.

Platformą Windows jest Win Server 2008 i skonfigurowałem usługę „Zaloguj się jako lokalne konto systemowe” z zaznaczoną opcją „Zezwalaj usłudze na interakcję z komputerem”.

Wszelkie pomysły na ten temat? Wielkie dzięki

Michael Lin
źródło

Odpowiedzi:

1

Począwszy od systemu Windows Vista, wszystkie usługi działają w osobnej sesji (sesja 0) i zwykle nie mogą bezpośrednio wchodzić w interakcje z użytkownikiem, nawet jeśli ustawiono opcję „Zezwól na interakcję usługi z komputerem”. Innymi słowy, nie powinieneś tego robić. Nie możesz uruchomić slave.exe w sesji logowania?

Jednak jako środek ograniczający zgodność z poprzednimi wersjami system Windows powinien wykryć, że usługa przedstawiła interfejs użytkownika i zaoferować jego wyświetlenie (na osobnym pulpicie). Nie jestem pewien, dlaczego to nie zadziała. Czy usługa jest skonfigurowana do działania jako system lokalny?

Harry Johnston
źródło
Wielkie dzięki za odpowiedź. Tak, konfiguruję usługę jako „Użyj lokalnego użytkownika systemu”. Więc nie mogę użyć „usługi Windows” do uruchomienia Jenkins slave, prawda? Szkoda, bo to bardzo wygodne ...
Michael Lin
Na przyszłość, w systemie Windows 7 i nowszych usługa wykrywania usług interaktywnych (UI0detect) nie jest skonfigurowana do domyślnego działania. Jeśli potrzebujesz, możesz uruchomić usługę ręcznie lub zmienić konfigurację, aby uruchomiła się automatycznie.
Harry Johnston,
1

Zetknąłem się z podobnym problemem, próbując uruchomić automatyczne skrypty do testowania skryptów internetowych (które wymagały GUI).

To jest podstęp. Musisz uruchomić połączenie pulpitu zdalnego, skonfigurować go tak, aby po uruchomieniu połączenia uruchomił plik .exe, wprowadzić i zapisać informacje uwierzytelniające oraz zapisać połączenie na dysku.

Poproś jenkins, aby uruchomił zapisane połączenie RDP i powinien zainicjować dla ciebie GUI.

Również jeśli uruchamiasz wiele poleceń systemu Windows w jenkins, musisz mieć każde polecenie jako osobne elementy (jeśli zwracają kod wyjścia .. na przykład, jeśli wywołujesz dwa pliki .bat lub coś takiego)

brakertech
źródło