Versionning script dzvents

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Versionning script dzvents

Message par pierrotori »

Bonsoir,
Comment vous gérer le versionning de vos scripts ?

on a pas d'environnements de test :o donc le script est en production dans une vers 1.1 alors que dans un de mes répertoires source il est en version 1.0

Ma première idée était de faire un script une fois par semaine qui compare la version des scripts en production et ceux du répertoire source et de m'informer que j'ai un script de version supérieure en production en test

suite à une période test et pour ne pas oublier la validation de celui-ci , je pensais faire un interrupteur de mise en production qui validerait définitivement la mise en production en recopiant celui-ci dans le répertoire source

Qu'en pensez vous ?

Bonne soirée
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Versionning script dzvents

Message par Keros »

Je fais tout depuis l'interface web. Je n'ai pas ressenti le besoin de séparer Test et Production. Je fais mon script, s'il n'est pas fini, il reste désactivé mais quand il fonctionne, il est sur ON. Si j'ai besoin d'y rajouter une fonction, j'y vais direct ou si c'est vraiment une grosse modif, je duplique le script.

Et pour revenir en arrière si besoin, j'ai mes sauvegardes journalières pour retrouver l'état d'un script (mais je n'en jamais eu recours).
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Versionning script dzvents

Message par Neutrino »

Je fais tout en prod :mrgreen:
Après, j'ai un serveur avec BackupPC qui fait une sauvegarde journalière des scripts.
Mes scripts sont sous forme de fichiers.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: Versionning script dzvents

Message par pierrotori »

C'est vrai que il y a 2 cas
Le nouveau script on peut jouer sur on et off, le temps de la validation
Par contre quand c'est une refonte d'un script, donc une nouvelle version qui peut remettre en cause traitement de fond, il y aura 2 cas : mise en production ou revenir en arrière

j'ai toujours une sauvegarde de mes scripts dans un répertoire source, comme par exemple script.lua en version 1.0
la version 2.0 elle va être dans le /home/pi/domoticz/scripts/dzVents/scripts meme nom de script mais en version 2.0

le but est de faire un versionning le temps de la validation du script et non un archivage de toutes les versions des scripts

je vais donc faire un bouton qui permettra de transférer la version 2.0 dans le répertoire source quand celle-ci est validée et qui sera repris dans la sauvegarde de nuit
et faire un traitement qui une fois par semaine comparera les versions de scripts du répertoire source avec ceux du répertoire dzVents
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Versionning script dzvents

Message par Keros »

J'ai eu le cas de la refonte des scripts quand je suis passé au DzVents. Mes Scripts LUA se nommaient LUA_Nom du script et pour mes nouvelles versions je créais un script DzVents_Nom du script (ça fonctionne aussi avec V2 ou autre). Pour mes tests, je désactivais les LUA (OFF) pour activer le DzVents (On) et je faisais l'inverse pour revenir en prod.
Lorsque j'ai eu terminé avec tous les scripts DzVents en Production (validés), j'ai sauvegardé les scripts LUA dans un dossier pour archive et je les ai supprimés des DomoticZ.

Je ne suis servi qu'une fois de mon archive de script LUA : c'était pour répondre à une question sur le forum :mrgreen:
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Versionning script dzvents

Message par boum »

Git. Le répertoire de scripts est un repo git.
Comme beaucoup ici, que de la prod. Quand je fais des changements, je commit et je push vers mon NAS.
La prochaine étape serait d'avoir une copie vers un repo privé github ou gitlab pour une sauvegarde distante.

Potentiellement, je peux facilement avoir une branche dev et une branch prod. Le serveur dz de test serait sur la branche dev et quand un script marche, faire un merge sur la branche prod. Puis faire un pull de la branch prod sur le DZ de prod.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: Versionning script dzvents

Message par pierrotori »

après je pose la question sur le versionning mais on ne déploie pas tous les jours des scripts non plus, d'ou en effet rester simple avoir un répertoire source et celui de production et les deltas soit en cours de validation ou de conception sur une certaine période.
j'avais pensé faire du versionning avec cvs mais trop grosse machine à mettre en place
La deuxième sauvegarde en cloud est intéressante et pourrais venir remplacer ma sauvegarde de mon disque externe
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: Versionning script dzvents

Message par pierrotori »

Du coup je suis parti sur un shell afin de m'alerter quand j'ai un écart sur un script dzvents et sa dernière sauvegarde validée

Code : Tout sélectionner

#!/bin/bash
# Script check version de script avec la source

now=$(date) # récupération de la date et heure pour les logs
applog=$(date +%d" "%b" "%X)" "$(hostname)" ("$(whoami)"): "
appmsg=$(date +%d" "%b" "%X)":"
debug=N     # Y/N mode debug
rm -f /temp/exp_diff_lua.txt
f_dry_run=Y # on simule la commande
path_log=/home/pi/exploit/log
path_src=/home/pi/domoticz/scripts/dzVents/scripts
path_dst=/home/pi/source/dzvents
echo Script TIMER
find $path_src -type f -name t*.lua | while read line ;
do
	nom=$(basename $line)
	if [ $debug = Y ]
	then
		diff $path_src/$nom $path_dst/$nom
	else
		diff -q $path_src/$nom $path_dst/$nom > /dev/null 2>&1
	fi
	err=$?	
	if [ $err == 2 ]
	then
		echo "$nom non versionne"
		echo $nom >> /temp/exp_diff_lua.txt
	fi
	if [ $err == 1 ]
	then
		echo "$nom ecart de version"
		echo $nom >> /temp/exp_diff_lua.txt		
	fi
done
echo Script DEVICE
find $path_src -type f -name d*.lua | while read line ;
do
	nom=$(basename $line)
	if [ $debug = Y ]
	then
		diff $path_src/$nom $path_dst/$nom
	else
		diff -q $path_src/$nom $path_dst/$nom > /dev/null 2>&1 
	fi
	err=$?
	if [ $err == 2 ]
	then
		echo "$nom non versionne"
		echo $nom >> /temp/exp_diff_lua.txt
	fi
	if [ $err == 1 ]
	then
		echo "$nom ecart de version"
		echo $nom >> /temp/exp_diff_lua.txt
	fi
done
if [ -f "/temp/exp_diff_sh.txt" ]
then
	if [ $f_dry_run = Y ]
    then
		echo "ecart de version"
	else
	curl -s "https://tel/messages/http/send?apiKey=xxxxxx=&to=+336XXXXXXXX&content=script-dzvents-ecart-version"
	fi
fi
exit 0
un fichier txt est généré dans la boucle afin de mémoriser les écarts celui-ci est dans temp en RAM
Cela me permet de m'alerter que j'ai modifié un script et de ne pas laisser cette modification trainer dans le temps sans la valider ou de revenir en arrière.
très utile si on change un timer ou des niveaux de log aussi, dans le cas d'un debug qui aurait été oublié dans le temps :D
Le mode debug permet d'afficher les écarts de chaque fichier

avec mise en place dans le crontab
20 * * * /home/pi/exploit/exp_diff_lua.sh >>/temp/exp_diff_lua.log 2>&1
Répondre