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.Xauthority
fichier (que mon utilisateur habituel possède, maisgitlab-runner
pas)
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