У нас есть Mac os x server (10.10.3), который мы используем для запуска функциональных тестов с Jenkins.
Мы хотели бы использовать (в наших тестах) инструмент /lib (sikulix для информации), который использует под капотом java.awt.Robot class -java.awt.GraphicsEnvironment-. Проблема в том, что мы не можем использовать этот java-класс в безгласном env, потому что он должен иметь доступ к графическому интерфейсу.
Итак, я хотел бы знать, было ли решение/взлом, чтобы этот инструмент работал с дженкинсами.
Учитывая, что у нас есть симулятор USB-HDMI (ускоритель Mac без головки), который имитирует подключенный дисплей.
У нас также установлены Xquartz, X11, xauth, поэтому я думал, что он обошел бы это безгласное ограничение java, заставив свойство java.awt.headless false и используя окно X, но это не так.
Исправьте меня, если я ошибаюсь: нам не нужно иметь реальный экран для этого, это цель эмулятора/симулятора отображения; не так ли?
Что я пробовал успешно использовать эту библиотеку в наших тестах:
-
использовать его на рабочем столе (с монитором, из него работает)
-
используйте совместное использование экрана между удаленным сервером Mac машиной A и локальным Mac-сервером машиной B (путем выполнения script в терминале этого совместного использования экрана) vnc
-
с ssh -Y на моем Linux-компьютере (клиенте), который также был сервером приложения X Window System (X11): он работал над пересылкой X11 без каких-либо изменений конфигурации ssh (флаг -Y). java.awt.headless = false полезен здесь
Но я не могу сказать, полезно ли это последнее решение. Хотя я выполнил script через ssh, у меня был подключен экран: это могло бы повлиять на что-то.
(Имейте в виду, что конечной целью является выполнение тестов с помощью jenkins).
Это привело меня к этой попытке: выполните script через ssh с флагом -Y или изменив файлы ssh_config/sshd_config (доступ к серверу mac -remote) с активным доступом к экрану, но он не распознается автоматически X-window: (
Здесь мои вопросы:
-
Будет ли достаточно подключаемый модуль xvfb (jenkins) делать то, что мы хотим? Я еще не знаю, как его настроить.
-
Можно ли сделать X11forwarding с сервера mac (script, выполненный с jenkins как daemon/agent, в том числе, возможно, с ssh -Y связью, пока еще не знаю, как заставить его работать) на экран общий? - который также является сервером... не знаю, почему он не может его распознать.
Да, я знаю, этот вопрос странный, но мой мозг горит, и я сбиваюсь с толку...
Кстати, я бы предпочел сделать все по-настоящему безголовным, но если это не возможно, и я должен использовать общий доступ к экранам, я в порядке.
В настоящее время мне действительно интересно, можно ли запустить приложение GUI, которое нуждается в X11 -on mac- в безголовой среде... Я думал, что ответ был да с правильными установками, но, по-видимому, это не так просто... или я должен что-то не понимать правильно.
Для пересылки X11 у меня есть набор $DISPLAY var, но я все равно получаю
Ошибка: не удается открыть отображаемый "адрес"
Даже если я установил отображение на локальный, удаленный или адрес, я по-прежнему заблокирован lib с доступом к графическому интерфейсу.
Другое решение может заключаться в подключении терминальных сеансов (сеанс совместного использования экрана/терминал, запускающий script), я попробую завтра с tmux. Мне все еще кажется странным, что сервер не может обнаружить свой общий сеанс (я хотел сказать это в другой раз!).... Существует открытый экранный чувак: s
С xvfb:
export DISPLAY=:1
Xvfb :1 &
Затем команда mvn, но она по-прежнему не работает.