Retour : Page Principale > sommaire applications générales > Nouveau site Web
Les données à migrer sont :
WebSVN : http://svn.tela-botanica.net/websvn/listing.php?repname=Applications.annuaire&path=/trunk/scripts/modules/migrationwp/
Utilisation : php Migration.php nom-de-l-action
(lancer sans argument pour voir la liste des actions possibles)
Ainsi on arrive la matin au bureau et on constate que ça marche pas les données sont là .
Ă€ ajouter dans la crontab de beta :
Attention, l'exécution du tout prend un temps fou (plusieurs heures) !
Migration des données de l'ancien site Web vers le nouveau
Une des tâches les plus délicates du changement de site Web est la migration des données existantes de Papyrus et SPIP, vers Wordpress.Les données à migrer sont :
- utilisateurs : les utilisateurs de l'Annuaire v1 Ă convertir en utilisateurs Wordpress / Buddypress
- actualités: les articles SPIP à convertir en posts Wordpress
- événements : les fiches Bazar à convertir en posts Wordpress / ACF
- rubriques : ? @TODO est-ce le classement des actus dans les bonnes rubriques ?
Script de migration
SVN : http://svn.tela-botanica.net/svn/applications/annuaire/trunk/scripts/modules/migrationwp/WebSVN : http://svn.tela-botanica.net/websvn/listing.php?repname=Applications.annuaire&path=/trunk/scripts/modules/migrationwp/
Utilisation : php Migration.php nom-de-l-action
(lancer sans argument pour voir la liste des actions possibles)
Migration quotidienne (avant sortie du site)
Pour tester le script de migration ci-dessus, on lance tous les matins un wrapper qui réinitialise l'environnement beta/pretest avec Wordmove, et lance toutes les actions du script de migration.Ainsi on arrive la matin au bureau et on constate que ça marche pas les données sont là .
tâche CRON
Exécute pretest-nightly-log.sh tous les matins à 01:00 du lundi au vendredi.À ajouter dans la crontab de beta :
0 1 * * 1-5 /home/beta/pretest-nightly-log.sh
script pretest-nightly.sh lançant Wordmove + les scripts de migration
Utilise le script de migration, se trouvant dans le code de l'Annuaire (v1, SVN) - dans cet exemple ce script est installé dans /home/beta/migrationwp (penser à régler le fichier config.php).Attention, l'exécution du tout prend un temps fou (plusieurs heures) !
#!/bin/bash # "Nightly builder" du site : # - copie la /preprod dans /pretest à l'aide de Wordmove # - lance le script de migration de l'ancien site (Papyrus / SPIP) vers /pretest # # Ne pas lancer directement, utiliser plutôt pretest-nightly-log.sh # # Mathias - 2017-08-22 MDP_TELABOTAP="mettre le mot de passe ici" DOS_PREPROD="/home/beta/www/preprod" CMD_WORDMOVE="wordmove push -e pretest --all" DOS_MIGRATION="/home/beta/migrationwp" CMD_MIGRATION_BASE="php Migrationwp.php" RETOUR=0 # empêche (vite fait) de lancer le script hors du wrapper pretest-nightly-log.sh if [ "$WRAPPER" != "OUI" ]; then echo "Lance pas ça à la main, malheureux ! Utilise plutôt pretest-nightly-log.sh" exit 0 fi # affiche "succès" si le premier argument vaut 0, sinon affiche "échec" testsucces () { if [ "$1" -eq "0" ]; then echo "> succès" else echo "> échec (exit code : $1)" fi } ## 0. C'est party echo "Constructeur nocturne (nightly builder) du site Web !" date ## 1. Wordmove /preprod => /pretest echo echo "> copie de /preprod dans /pretest" echo "cd $DOS_PREPROD" cd "$DOS_PREPROD" echo $CMD_WORDMOVE eval "$CMD_WORDMOVE" RETOUR_WM=$? testsucces $RETOUR_WM RETOUR=$((RETOUR + RETOUR_WM)) ## 2. Script "migrationwp" echo echo "> migration des données du site actuel dans /pretest" echo "cd $DOS_MIGRATION" cd "$DOS_MIGRATION" # 2.1 Copie des images des actualités avec rsync CMD_RSYNC="rsync -avz --rsh= \"/usr/bin/sshpass -p $MDP_TELABOTAP ssh\" telabotap@sequoia:/home/telabotap/www/actu/IMG/arton* /home/beta/www/pretest/wp-content/uploads/2017/08/" echo $CMD_RSYNC eval "$CMD_RSYNC" RETOUR_RSYNC=$? testsucces $RETOUR_RSYNC RETOUR=$((RETOUR + RETOUR_RSYNC)) ## 2.2 Boucle sur toutes les actions du script de migration MIG_ACTIONS=( "utilisateurs" "utilisateurs-meta" "utilisateurs-profil" "utilisateurs-activite" "actualites" "actualites-commentaires" "actualites-image-de-couverture" "evenements" "evenements-meta" "rubriques" ) for action in "${MIG_ACTIONS[@]}"; do CMD_MIGRATION="$CMD_MIGRATION_BASE $action" echo echo $CMD_MIGRATION eval "$CMD_MIGRATION" RETOUR_MIG=$? testsucces $RETOUR_MIG RETOUR=$((RETOUR + RETOUR_MIG)) done ## 3. Bilan echo echo "Terminé !" #echo "$RETOUR_WM" #echo "$RETOUR_MIG" #echo "$RETOUR" exit $RETOUR
wrapper pretest-nightly-log.sh qui envoie un log par email
Déclenche pretest-nightly.sh et envoie le résultat par email à l'adresse configurée.#!/bin/bash # Wrapper pour pretest-nightly.sh, qui envoie le log par email # # À lancer tous les matins à l'aide d'un CRON # # Mathias - 2017-08-22 CMD_PRETEST_NIGHTLY="./pretest-nightly.sh" AJD=`date "+%Y-%m-%d"` FICHIER_LOG="/tmp/pretest-nightly_${AJD}.log" ADR_EMAIL="superadresse@superdomaine.com" # 1. Exécution du script pretest-nightly, log du résultat cd "$(dirname "$0")" echo $CMD_PRETEST_NIGHTLY echo "log : $FICHIER_LOG" eval WRAPPER="OUI" "$CMD_PRETEST_NIGHTLY" > $FICHIER_LOG # 2. Envoi d'un email de rapport contenant le log echo "Envoi du log par email à [$ADR_EMAIL]" mail -s "Pretest-nightly rapport du $AJD" $ADR_EMAIL < $FICHIER_LOG