[développement] Pour qualifier votre plugin
Suite à ma déconvenue sur mes tests de admin.css et site.css qui m'a mené à croire que ces fichiers n'étaient pas correctement intégrés, tout ça parce que j'ai travaillé exclusivement sur un environnement de développement sans passer par un environnement de qualif/preprod, j'ai décidé de créer un petit script pour industrialiser la mise en place d'un environnement de pre-prod avec un plugin en particulier.
Au début, c'était plus pour m'amuser qu'autre chose, et puis en fait je réalise qu'il est 'achement bien : en 1 seconde mon plugin est prêt à être testé sur un environnement tout neuf, j'ai juste à rafraichir mon navigateur sur l'environnement de pre-prod.
Le principe : lorsque je veux tester un plugin sur un environnement "frais", j'ai juste à lancer la commande "preprod NomDeMonPlugin" et il me prépare tout.
En l'occurrence, je fonctionne sous Linux (Ubuntu), et ce script est en shell. En pré-requis, il faut un environnement de pré-prod "frais" zippé dans un coin. J'utilise "sudo" pour les accès root (utilisés pour gérer www-data).
Ce que le script fait :
- détruire l'ancien environnement de pré-prod
- créer un environnement de pré-prod frais par simple dézippage du zip dont je viens de parler
- construire, à partir de mon environnement de dev, un packet du plugin nommé <Plugin>_v<Version>.zip où <Plugin> est le nom du plugin et <Version> est la version du plugin (telle que trouvée dans infos.xml).
- déplacer le plugin dans l'environnement de pre-prod et le dézipper
- modifier le owner de l'environnement de pre-prod pour que www-data y accède.
En effet secondaire sympa, ça prépare automatiquement un packet du plugin avec le bon numéro de version.
Pour que le script soit appelable de partout, j'ai fait un sudo ln -s preprod.sh /usr/bin/preprod
Je donne ce script pour information, pour ceux que ça intéresse. Il doit être modifié pour s'adapter à votre contexte (notamment en terme de répertoires).
(et merci de pas faire n'importe quoi, y'a quand même un "sudo rm -rf" qui traine dans le code)
Edit 08/03/2015 : modification légère du script pour prendre en compte le retrait du slash final s'il est présent dans le nom du plugin
Au début, c'était plus pour m'amuser qu'autre chose, et puis en fait je réalise qu'il est 'achement bien : en 1 seconde mon plugin est prêt à être testé sur un environnement tout neuf, j'ai juste à rafraichir mon navigateur sur l'environnement de pre-prod.
Le principe : lorsque je veux tester un plugin sur un environnement "frais", j'ai juste à lancer la commande "preprod NomDeMonPlugin" et il me prépare tout.
En l'occurrence, je fonctionne sous Linux (Ubuntu), et ce script est en shell. En pré-requis, il faut un environnement de pré-prod "frais" zippé dans un coin. J'utilise "sudo" pour les accès root (utilisés pour gérer www-data).
Ce que le script fait :
- détruire l'ancien environnement de pré-prod
- créer un environnement de pré-prod frais par simple dézippage du zip dont je viens de parler
- construire, à partir de mon environnement de dev, un packet du plugin nommé <Plugin>_v<Version>.zip où <Plugin> est le nom du plugin et <Version> est la version du plugin (telle que trouvée dans infos.xml).
- déplacer le plugin dans l'environnement de pre-prod et le dézipper
- modifier le owner de l'environnement de pre-prod pour que www-data y accède.
En effet secondaire sympa, ça prépare automatiquement un packet du plugin avec le bon numéro de version.
Pour que le script soit appelable de partout, j'ai fait un sudo ln -s preprod.sh /usr/bin/preprod
Je donne ce script pour information, pour ceux que ça intéresse. Il doit être modifié pour s'adapter à votre contexte (notamment en terme de répertoires).
(et merci de pas faire n'importe quoi, y'a quand même un "sudo rm -rf" qui traine dans le code)
# Ce script est utilisé pour pluXml et permet d'installer un plugin en preprod.
#
# Il prend en paramètre :
# - le nom du plugin
#
# Le principe :
# - On a un environnement de dev dans /var/www/html/pluxml-dev
# - On a un fichier zippé contenant un environnement de pre-prod "vierge"
# (le mien contient une fresh install de pluxml avec juste un administrateur créé
# et le install.php détruit).
# - le script créé un nouvel environnemt de preprod en détruisant l'éventuel ancien,
# créé un pachet zippé contenant le plugin en cours (en utilisant sa version en cours)
# puis installe ce packet sur la preprod.
# Reste plus qu'à tester le plugin.
# Le packet zippé du plugin est conservé dans pluxml-dev/plugins/
if [ -z "$1" ]
then
echo "Il faut donner le nom du plugin"
exit
fi
www=/var/www/html
dev=$www/pluxml-dev
preprod=$www/pluxml-preprod
plugin=`echo $1 | tr -d '/'`
devplugin=$dev/plugins/$plugin
if [ ! -d $devplugin ]
then
echo "Le plugin " $devplugin " n'existe pas"
exit
fi
# On récupère le numéro de version du plugin
version=`awk -F '>|<' '$0 ~ /<version>/ { print $3 }' $devplugin/infos.xml`
echo "Installation en preprod du plugin $plugin version $version"
# On détruit l'éventuel packet précédent du plugin (pour la version en cours)
[ -f ${devplugin}_v${version}.zip ] && rm ${devplugin}_v${version}.zip
# On construit le packet du plugin
cd $dev/plugins
zip -r ${plugin}_v${version}.zip $plugin > /dev/null
# On détruit l'ancien environnement de preprod
sudo rm -rf $preprod
# On construit le nouvel environnement de preprod
unzip ${preprod}.zip -d $www > /dev/null
# On déplace le packet de dev vers preprod
cp ${devplugin}_v${version}.zip $preprod/plugins/
# On dézippe le packet
unzip $preprod/plugins/${plugin}_v${version}.zip -d $preprod/plugins/ > /dev/null
# Et maintenant, on donne tout à www-data
sudo chown www-data:www-data -R $preprod
echo "ok"
Edit 08/03/2015 : modification légère du script pour prendre en compte le retrait du slash final s'il est présent dans le nom du plugin
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
De mon côté j'ai :
[list=*]
[*]modifié la ligne de zip pour exclure l'arbo .git et divers fichiers par [/*]
[*]rajouté (juste avant le chown) la suppression du zip dans le repertoire plugin cible [/*]
[/list]
voilà, c'est tout