Skip to content

vnc server Jenkins Selenium Tests

Um den vncserver beim Starten des Jenkins Server zu garantieren, habe ich ein Jenkins Pre Hooks Skript /var/lib/jenkins/bin/jenkins-hook-pre.sh erstellt, welches den vncserver auf dem Displayport :0 mit einer Geometrie von 1280x1024 als jenkins Benutzer startet.

# Check, if the vncserver is running
vncrunning=$(ps aux | grep Xvnc4 | grep -v grep)

# If the vncserver is not running, we start them
if [ ! -n "${vncrunning}" ]; then
    su - jenkins -c "vncserver :0 -geometry 1280x1024 >/dev/null 2>&1"
fi

# Wait for 3 seconds and exit the script
sleep 3 && exit 0

Im Start/Stop Skript /etc/init.d/jenkins ist in der Start Sequenz der Aufruf des /var/lib/jenkins/bin/jenkins-hook-pre.sh eingebunden.

....
case "$1" in
  start)
    [ -f /var/lib/jenkins/bin/jenkins-hook-pre.sh ] && /var/lib/jenkins/bin/jenkins-hook-pre.sh
    log_daemon_msg "Starting $DESC" "$NAME"
....

Um den vncserver im laufenen Betrieb manuel zu starten, führen wir folgende Schritte als jenkins Benutzer durch.

# Zuerst werden wir zum Benutzer jenkins
root:~# su - jenkins

# Mit diesem Befehl wird der vncserver mit dem Displayport :0 und einer Fenster Geometrie von 1280x1024 Pixeln gestartet:
jenkins:~$ vncserver :0 -geometry 1280x1024

# Mit diesen Befehl kann man einen Bestimmten vncserver Prozess (hier mit dem Displayport :2) töten:
jenkins:~$ vncserver -kill :2

# Mit diesen Befehl sieht man, ob und mit welchen Displayport der vncserver läuft:
jenkins:~$ ps aux | grep Xvnc4 | grep -v grep | grep 'Xvnc4 :[0-9]*'

# Damit die Änderungen dem Jenkins Server bekannt sind, muss nach dem Starten des vncservers der Jenkins Server neu gestartet werden:
root:~# systemctl stop jenkins
root:~# systemctl start jenkins

Dokumentation