veilletech.fr
3 nov. Feed du jour
#06 PHP Article

PIE 1.5 : la CI doit nommer chaque extension PHP

Votre CI ne devinera plus quel paquet installer.

PIE 1.5 ignore désormais l'option --allow-non-interactive-project-install : en CI, une extension manquante sans paquet désigné fait échouer l'installation, et il faut passer --select=extension=vendeur/paquet. La version ajoute aussi pie upgrade, pie search et l'installation de plusieurs extensions en une commande.

2 min de lectureintermédiairevidéo 1:18
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Pourquoi ça compte
  3. Comment s'y prendre
  4. Les autres nouveautés
  5. À retenir

Ce qui se passe

PIE (PHP Installer for Extensions) gère les extensions du runtime PHP. Sa version 1.5, annoncée le 7 octobre par la PHP Foundation, est détaillée le 2 novembre par Laravel News. Le point à connaître avant de monter de version : l'option --allow-non-interactive-project-install, qui laissait PIE choisir seul les paquets lors d'une installation sans interaction, est désormais dépréciée et sans effet.

Pourquoi ça compte

Lancé sans argument dans un projet, pie install lit les extensions déclarées dans composer.json ("ext-redis": "*" par exemple). Une entrée ext-* déclare une exigence, elle n'installe rien. En 1.5, si une extension manque et qu'aucun paquet n'est désigné, l'installation non interactive échoue : le problème apparaîtra donc au premier build qui utilise la 1.5.

Comment s'y prendre

Nommer le paquet de chaque extension manquante avec --select, au format extension=vendeur/paquet (nom d'extension sans le préfixe ext-) :

Terminal
pie install --no-interaction --no-dev \
    --select=redis=phpredis/phpredis
Terminal
pie install --no-interaction \
    --select=redis=phpredis/phpredis \
    --select=xdebug=xdebug/xdebug

Les autres nouveautés

Pull requests : #633 (--select), #710 et #673 (--no-dev), #666 (upgrade), #642 et #674.

À retenir

Relire les Dockerfiles et scripts de build qui appellent pie install sans nom de paquet, et y ajouter les --select manquants avant la montée en 1.5.

Source : Laravel News, qui renvoie aux notes de version 1.5.0. Source en anglais.