[développement] Pour qualifier votre plugin

GariGari Member
mars 2015 modifié dans Entraide
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)
# 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

Réponses

  • Intéressant. Merci. ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    En effet script interressant. Et nickel les commentaires dans le code ;)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Je n'ai pas testé mais je trouve le principe très intéressant.
  • GariGari Member
    Je profite du fait que j'ai fait une modification mineure du script (cf premier post) pour demander si vous utilisez ce script ou si vous vous en êtes inspirés pour faire le votre ?
  • Très sympa ce script... Je récupère ça de suite pour l'adapter à mon environnement. Merci.
  • emmanuel_semmanuel_s Member
    février 2016 modifié
    Un peu tard peut-être mais tant pis...
    De mon côté j'ai :
    [list=*]
    [*]modifié la ligne de zip pour exclure l'arbo .git et divers fichiers
    zip -r ${plugin}_v${version}.zip $plugin > /dev/null
    
    par
    zip -r ${plugin}_v${version}.zip $plugin -x \*~ *git/* *.md *log.txt > /dev/null
    
    [/*]
    [*]rajouté (juste avant le chown) la suppression du zip dans le repertoire plugin cible
    rm $preprod/plugins/${plugin}_v${version}.zip
    
    [/*]
    [/list]


    voilà, c'est tout
Connectez-vous ou Inscrivez-vous pour répondre.