Choix version de PHP
Sommaire
Présentation
Cette page a pour objet de décrire comment sélectionner une version de PHP dans Jenkins.
Mise en œuvre
Avec la variable d'environnement $PATH
Dans le cadre d'une utilisation multiple des versions de PHP, il est nécessaire de pouvoir indiquer aux jobs Jenkins quelle version de PHP utiliser pour le build.
A ce titre, le plugin Environment Injector a été installé.
Pour indiquer à un projet Jenkins quel version de PHP utiliser, se rendre sur le projet en question et cliquer sur Configurer :
Dans la configuration du projet, se rendre dans la section Environnements de Build et cliquer sur Inject environment variables to the build process :
Dans la section précédemment ouverte, dans le champ Properties Content, définir le PATH
comme ceci : /local/php/php7/bin:$PATH
. Dans cet exemple, le chemin des binaires PHP 7 a été mis devant la variable $PATH
. De ce fait, en cas de présence déjà existante de chemins d'autres versions de PHP, ce sera celui de PHP 7 qui prévaudra.
Pour tester et vérifier la bonne prise en compte, dans la section Build, ajouter une étape Exécuter un script shell et renseigner les lignes suivantes :
which php composer -v
Cliquer sur Sauver :
Lancer ensuite un build en cliquant sur Lancer un build :
Un build supplémentaire apparaît dans la section Historique des builds :
Cliquer sur le dernier build puis cliquer sur Console Output pour afficher le détail :
Cela affiche la sortie de la console avec le résultat des commandes définies plus haut dans la section Exécuter un script shell
La version de PHP utilisé est bien la 7, comme défini plus haut, et Composer est fonctionnel.
Avec Gradle via du Groovy
Lors de son installation, Jenkins est livré avec 3 outils globaux configurables : Maven, Gradle et JDK.
Ces outils offrent des possibilités intéressantes, qui sont difficiles à mettre en oeuvre pour du PHP. De ce fait, pour charger les binaires de PHP selon la version souhaitée, il est possible de galvauder Gradle.
Côté administration Jenkins
Aller dans l'administration Jenkins puis dans Configuration globale des outils.
Dans la section Gradle, cliquer sur Ajouter Gradle pour ajouter une version de PHP :
Nommer le champ name PHP suivi de la version majeure concernée, définir GRADLE_HOME sur la localisation du répertoire d'installation de la version de PHP et décocher Install automatically :
Répéter l'action autant de fois que de versions différentes de PHP désirées et cliquer sur Enregistrer.
Cette action aura pour effet de rajouter dans le PATH le dossier bin d'une version de PHP lorsqu'elle sera appelée via un script Groovy.
Côté utilisation Jenkins
Lors de la création/modification d'un job Jenkins au travers d'un script Groovy, pour définir la version de PHP à utiliser, il suffit d'appeler l'outil gradle correspondant à la version de PHP à utiliser. Cela se fait dans la section tools, après la déclaration de l'agent, au début du script. Exemple pour utiliser PHP en version 7 :
pipeline {
agent any
tools {
gradle 'PHP7'
}
stages {
stage('Test appel PHP') {
steps {
sh '''
php -v
which php
echo $PATH
composer --version
'''
}
}
}
}
Cela aura pour effet de produire la sortie suivante :
... [workspace] Running shell script + php -v PHP 7.2.19 (cli) (built: Jul 25 2019 16:09:54) ( ZTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans + which php /local/php/php7/bin/php + echo /local/php/php7/bin:/local/php/php7/bin:/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/MAVEN_3.5.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/local/mysql/5.6.23/bin:/local/mysql/5.6.23/share/mysql:/home/tools/bin:/usr/lib/oracle/10.2.0.4/client64/bin:/local/www/2.4.12/bin/:. /local/php/php7/bin:/local/php/php7/bin:/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/MAVEN_3.5.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/local/mysql/5.6.23/bin:/local/mysql/5.6.23/share/mysql:/home/tools/bin:/usr/lib/oracle/10.2.0.4/client64/bin:/local/www/2.4.12/bin/:. + composer --version Composer version 1.5.2 2017-09-11 16:59:25 ...