Estoy usando GitLab CI para ejecutar pruebas automatizadas en una configuración de Ubuntu 14.04. El ejecutor GitLab CI creó un nuevo usuario, gitlab-runner
, que ejecuta todas las pruebas. Ahora estas pruebas incluyen componentes GUI, por lo que necesito una pantalla X, que fuerzo incluso sin una pantalla física a través de ConnectedMonitor
y CustomEDID
opciones en el xorg.conf
.
El problema es que cuando el usuario gitlab-runner
inicia una prueba a través de DISPLAY=:0.0 ./runTestApp
, recibo un “No se pudo conectar a la pantalla:0.0” error. Puedo solucionarlo iniciando sesión como usuario normal en la estación de trabajo y ejecutando sudo DISPLAY=:0.0 xhost +
.
Sin embargo:
- No he encontrado una forma de ejecutar correctamente
xhost +
de forma automática al inicio (intenté ponerlo en/etc/rc.local
) - La página man dice que
xhost +
en realidad es muy inseguro, pero no he descubierto qué hacer en su lugar. Parece que podría tener que ver con una.Xauthority
file (que tiene mi usuario habitual, perogitlab-runner
no)
¿Cuál es la mejor manera de dar gitlab-runner
acceso permanente a la pantalla X?
Respuesta aceptada:
Primero, para otorgar acceso solo al ejecutor Gitlab CI, debe usar un comando más restringido:
xhost +SI:localuser:gitlab-runner
Segundo, /etc/rc.local
se ejecuta demasiado pronto para que este comando tenga efecto y, además, debe configurar $DISPLAY
para que funcione.
Depende de cómo se inicie su servidor X. Si está utilizando LightDM, creo que puede hacer que funcione agregando la siguiente línea a /etc/lightdm/lightdm.conf
:
greeter-setup-script=xhost +SI:localuser:gitlab-runner