Travis CI permet de tester vos projets et, éventuellement, de les déployer, c'est un système complet d'intégration continue.
Pour le module Python MSS, j'avais besoin d'un serveur X avec l'extension RandR activée. Et c'est la misère à trouver des informations à jour à ce sujet.
Xvfb
La documentation officielle préconise d'utiliser Xvfb. Nous aurons besoin d'avoir l'extenstion RandR, elle est activée par défaut sur cette configuration :
matrix:
include:
- os: linux
python: "3.7"
dist: xenial
sudo: true
env:
- TOXENV=py37
- DISPLAY=":42"
Les 2 lignes intéressantes sont dist: xenial
et sudo: true
.
Ensuite, complétez les commandes tel que :
before_install:
- /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- $DISPLAY -ac -screen 0 1280x1024x24
before_script:
- sh -e /etc/init.d/xvfb start
Vous pouvez voir le fichier .travis.yml complet pour vous faire une idée.
Xpra
Nous allons voir une seconde solution : Xpra, qui permet à l’utilisateur de voir les applications X distantes sur une machine locale, et de se déconnecter et reconnecter de la machine distante sans perdre l’état des applications en cours. L'idée, ici, est de créer un serveur X factice (dummy X server en anglais).
Ajoutez ces lignes à votre fichier de configuration Travis pour installer les paquets nécessaires :
addons:
apt:
packages:
- xpra
- xserver-xorg-video-dummy
Ensuite, ajoutez celles-ci pour démarrer le factice serveur X :
before_install:
- xpra --xvfb="Xorg +extension RANDR -config `pwd`/tests/dummy.xorg.conf -logfile ${HOME}/.xpra/xorg.log" start :42
- export DISPLAY=:42
C'est tout ! Vous avez maintenant un accès au display :42.0
.
Vous pouvez voir le fichier de configuration en entier : .travis.yml et le fameux dummy.xorg.conf.
Historique
- 2019-01-01 : Ajout de la section Xvfb, fonctionnel à ce jour. Auparavant, l'erreur
Xlib: extension "RANDR" missing on display ":42"
bloquait son utilisation.
Source : archSeer/glu .travis.yml.
Mots clefs : travis use x server with randr extension.