PIE (PHP Installer for Extensions) gère les extensions de votre environnement PHP. La version 1.5 apporte des commandes utiles, mais aussi un changement qui peut casser un pipeline : l'option qui sélectionnait automatiquement les paquets lors d'une installation non interactive ne fait plus rien.
Le changement qui peut casser votre CI
Prenons une application Laravel qui utilise PhpRedis et le déclare dans composer.json :
{
"require": {
"ext-redis": "*"
},
"require-dev": {
"ext-xdebug": "*"
}
}L'entrée ext-redis déclare un besoin pour le runtime PHP : elle n'installe pas PhpRedis. Quand vous lancez pie install sans argument dans le dossier du projet, PIE examine les extensions requises. Avant, l'option --allow-non-interactive-project-install choisissait les paquets toute seule. En 1.5, elle est dépréciée et ignorée : une extension manquante sans choix explicite fait échouer l'installation non interactive.
La nouvelle façon de faire : --select
Pour un build de production de l'exemple ci-dessus :
pie install --no-interaction --no-dev \
--select=redis=phpredis/phpredisÀ gauche, le nom de l'extension sans ext- ; à droite, le nom du paquet. PIE vérifie si Redis est déjà disponible et installe le paquet choisi sinon. Ajoutez un --select par extension manquante qui demande un choix. Une commande qui nomme déjà son paquet, comme pie install phpredis/phpredis, n'est pas concernée.
Garder les extensions de développement hors de la production
Sans --no-dev, PIE vérifie aussi les extensions listées dans require-dev, ici Xdebug. Avec cette option, la vérification les ignore. Attention : elle ne désinstalle rien et ne remplace pas composer install --no-dev pour vos paquets PHP.
Pour un environnement de développement qui a besoin des deux extensions :
pie install --no-interaction \
--select=redis=phpredis/phpredis \
--select=xdebug=xdebug/xdebugEn mode non interactif, PIE n'installe pas automatiquement les outils de compilation manquants. La nouvelle commande pie check-build-tools permet de vérifier l'environnement avant d'installer.
pie upgrade : mettre à jour les extensions
PIE 1.5 ajoute pie upgrade, qui met à jour les extensions installées avec PIE sur l'installation PHP visée, en respectant les contraintes de version enregistrées à l'installation. Elle ne met pas à jour Laravel ni le dossier vendor.
pie install 'phpredis/phpredis:^6.0'Les pie upgrade suivants installeront les versions 6.x compatibles. Passer en 7.x demande de changer la contrainte. Les options de configuration sont conservées d'une mise à jour à l'autre.
Autres ajouts
Pour les images Docker qui nomment directement leurs extensions, PIE accepte maintenant plusieurs paquets dans une seule commande :
pie install phpredis/phpredis xdebug/xdebugLa commande pie search aide à trouver le nom d'un paquet avant d'écrire ces lignes, et la bibliothèque de vérification des attestations a été mise à jour. Les notes de version détaillent le reste.
Que faire maintenant ?
- Cherchez dans vos Dockerfile et pipelines l'option
--allow-non-interactive-project-installet remplacez-la par un ou plusieurs--select. - Ajoutez
--no-devà vos builds de production. - Fixez la version de PIE dans vos images tant que vous n'avez pas testé la 1.5.
- Testez
pie check-build-toolsdans votre image de build.
Source : Laravel News
