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.