jenkins/hudson: пакетные окна CMD не видны, когда ведомое устройство работает как служба Windows
Я запускаю Jenkins slave как службу Windows, которая затем запускает цепочку вызовов (например):
Slave.exe-> ant-> cmd batch-> notepad.exe
Проблема в том, что "notepad.exe" не отображается, я вижу его в диспетчере задач, но он не показывает его пользовательский интерфейс.
Платформа Windows - это Win Server 2008, и я настроил службу "Вход в систему как локальная системная учетная запись", отметив "Разрешить службе взаимодействовать с рабочим столом".
Есть идеи по этому поводу? большое спасибо
2 ответа
Я столкнулся с подобной проблемой, пытаясь запустить некоторые сценарии автоматизированного веб-тестирования сценариев (для которых требовался графический интерфейс).
Это трюк. Вам необходимо запустить подключение к удаленному рабочему столу, настроить его на запуск.exe после запуска подключения, ввести и сохранить информацию для аутентификации и сохранить подключение на диск.
Пусть Дженкинс отключит сохраненное RDP-соединение, и оно должно запустить графический интерфейс для вас.
Кроме того, если вы выполняете несколько команд Windows в jenkins, вам нужно, чтобы каждая команда была представлена в виде отдельных элементов (если они возвращают код выхода.. например, если вы вызываете два файла.bat или что-то в этом роде)
Начиная с Windows Vista, все службы работают в отдельном сеансе (сеанс 0) и не могут нормально взаимодействовать напрямую с пользователем, даже если установлен параметр "Разрешить взаимодействию службы с рабочим столом". Другими словами, вы не должны этого делать. Вы не можете запустить slave.exe во время сеанса входа?
Однако в качестве меры по снижению обратной совместимости Windows должна обнаруживать, что служба представила пользовательский интерфейс, и предложить отобразить ее вам (на отдельном рабочем столе). Я не уверен, почему это не будет работать. Служба настроена для работы в качестве локальной системы?