Le 31 août 2017, Travis CI annonce que les traitements seront dorénavant lancés dans l’environnement « Trusty » par défaut. Il s’agit de la distribution Ubuntu 14.04 qui est actuellement en LTS (Long Term Support).
Ce changement peut être impactant pour votre projet car il n’est pas exactement compatible avec l’ancienne version : « Precise ».

Si vous maintenez un projet PHP qui est testé sur de vieilles version du langage (PHP 5.2 et 5.3 par exemple) vous avez peut être vu que les traitements partent en erreur car ces versions ne peuvent plus être installées…
Ces versions sont aujourd’hui obsolètes dans l’eco-système PHP, il n’est donc pas pertinent de les maintenir en place…

Je maintiens l’extension WordPress Mautic depuis quelques temps et les tests sont effectués sur toutes les version de PHP à partir de la 5.2. L’écosystème WordPress est particulier dans le sens ou il s’attache à garantir une compatibilité la plus large possible avec PHP.

Travis décide quelles versions je dois utiliser et moi je dis NON ?. Suite à cette mise à jour de leur environnement, mes tests passent au rouge et je n’aime pas trop ça.

La solution

Pour continuer d’exécuter des tests, il faut spécifier l’environnement à utiliser pour les traitements :

language: php

sudo: false

env:
  global:
    - WP_PHPUNIT=phpunit
    - COMPOSER_DISABLE_XDEBUG_WARN=1

matrix:
  fast_finish: true
  include:
    - php: 5.2
      env: WP_VERSION=4.6 WP_MULTISITE=1
      dist: precise
    - php: 5.2
      env: WP_VERSION=master
      dist: precise
    - php: 5.3
      env: WP_VERSION=4.5
      dist: precise
    - php: 5.6
      env: WP_VERSION=4.4
…

Pour chaque contexte qui le nécessite, j’ajoute dist: precise dans les paramètre et le traitement sera exécuté dans l’ancien environnement qui est toujours compatible.

Attention, cette petite astuce n’est pas pérenne, elle permet de repasser au vert rapidement. Travis annonce que l’environnement « Precise » est obsolète et pourrait être supprimé prochainement.
Il faudra donc creuser un peu pour continuer de garantir cette compatibilité ou choisir d’abandonner les vieilles versions de PHP.

Si quelqu’un connaît une autre solution, je suis preneur ?.