J'utilise GitLab CI pour exécuter des tests automatisés sur une configuration Ubuntu 14.04. Le coureur GitLab CI a créé un nouvel utilisateur, gitlab-runner , qui exécute tous les tests. Maintenant, ces tests incluent des composants d'interface graphique, j'ai donc besoin d'un affichage X - que je force même sans affichage physique via le ConnectedMonitor et CustomEDID options dans le xorg.conf .
Le problème est que lorsqu'un test est lancé par l'utilisateur gitlab-runner via DISPLAY=:0.0 ./runTestApp , j'obtiens un message "Impossible de se connecter à l'affichage :0.0" Erreur. Je peux le réparer en me connectant en tant qu'utilisateur régulier sur le poste de travail et en exécutant sudo DISPLAY=:0.0 xhost + .
Cependant :
- Je n'ai pas trouvé de moyen d'exécuter automatiquement
xhost +avec succès au démarrage (j'ai essayé de le mettre dans/etc/rc.local) - La page de manuel dit que
xhost +est en fait très précaire, mais je n'ai pas trouvé quoi faire à la place. On dirait que cela pourrait avoir à voir avec un.Xauthorityfichier (que mon utilisateur habituel possède, maisgitlab-runnerpas)
Quelle est la meilleure façon de donner gitlab-runner accès permanent à l'affichage X ?
Réponse acceptée :
Tout d'abord, pour donner accès uniquement au runner Gitlab CI, vous devez utiliser une commande plus restreinte :
xhost +SI:localuser:gitlab-runner
Deuxièmement, /etc/rc.local s'exécute bien trop tôt pour que cette commande ait un effet, et de plus, vous devez définir $DISPLAY pour que ça marche.
Cela dépend de la façon dont votre serveur X est démarré. Si vous utilisez LightDM, je pense que vous pouvez le faire fonctionner en ajoutant la ligne suivante à /etc/lightdm/lightdm.conf :
greeter-setup-script=xhost +SI:localuser:gitlab-runner