Skip to content
This repository has been archived by the owner on Jul 22, 2022. It is now read-only.

Installation et maj : amélioration du mécanisme #665

Merged
merged 14 commits into from
Jul 2, 2018

Conversation

prytoegrian
Copy link
Member

@prytoegrian prytoegrian commented May 28, 2018

Fix #174

Abstract

Les patchs de versions ne sont pas satisfaisants en l'état actuel. Le fichier regroupant tous les changements – installation comme migration – fait perdre de vue quelle PR a introduit quoi, et si la lecture est difficile, le debug aussi.
Je propose donc d'ajouter un niveau de granularité aux patchs, leur permettant de nous montrer isolément de quel changement il s'agit.

En plus de l'aspect évidemment moins lourdingue du processus de migration, dire qu'une installation est une mise à jour particulière et faire des patchs à incréments a un effet intéressant : ça va nous permettre, tôt ou tard, d'avoir moins de branches. Une fois que le code sera dans une bonne dynamique de fiabilité, nous pourrons être sûrs de nous et pousser nos branches de travail sur master. En cas de bug, il nous suffira de patcher le code, de livrer une version et de lancer le script de mise à jour. Ce genre de choses n'est pas possible dans la version actuelle, et c'est pour ça que j'introduis les incréments. Tout cela s'accompagne bien évidemment d'un support aux utilisateurs pour leur faire prendre l'habitude de migrer souvent, sinon ça perd un peu de son intérêt.

Méthodo

Je n'ai pas pu faire un système basé sur le timestamp comme je le voulais au départ compte tenu que la synchronisation temporelle entre les développements et les installations n'était pas assurée. J'ai donc un truc encore plus simple : les patchs sont organisés dans un seul répertoire, un fichier par incrément, sous la forme « Major.minor.patch ». Cela me permet d'assurer la migration tout en garantissant la synchronisation entre les devs et les utilisateurs.

Au fur et à mesure des sorties, le tout premier patch contiendra la totalité des changements induits par les autres et l'histoire recommencera.

J'ai vainement tenté de faire une installation / maj en web et d'être le plus compatible possible. Mais ça n'a pas été possible ; seul l'admin peut avoir le droit de faire une mise à jour, et vu les patchs à incrément, personne aurait pu se connecter pour avoir le droit de mettre à jour si des changements de BD apparaissent. Je suis donc parti sur un truc sécurisé et souple à la fois puisqu'il n'est pas accessible : le CLI.

Une installation se présente ainsi tout bêtement :

$ make nom_instance=http://libertempo install

une mise à jour

$ make update

À noter que l'installation crée désormais la DB. Il y a aussi un ordre make reinstall pour les devs qui passent leur temps à déboguer leur code (…).

J'ai aussi mis une doc, accessible via l'ordre par défaut de make : make

Test

  • l'index web est capable de savoir si on a déjà installé l'appli ou non,
  • il est possible de faire une installation
  • il est possible de faire une maj avec la nouvelle méthode (1.12.0 -> 1.12.1)
  • il est possible de faire une maj en venant d'une ancienne version (1.8 -> 1.12.0)
  • selon imagination

NB : j'ai tout supprimé comme un berserk, encore une fois, mais c'est pour la bonne cause. J'ai en effet pour ambition d'avoir un vrai installateur automatisé qui embarquerait l'installation via composer ainsi que tous les contrôles sur la pile technique (curl, php7, mbstring, …).

@prytoegrian prytoegrian self-assigned this May 28, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 30, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment May 31, 2018
@libertempo libertempo deleted a comment Jun 5, 2018
@libertempo libertempo deleted a comment Jun 5, 2018
@libertempo libertempo deleted a comment Jun 5, 2018
@libertempo libertempo deleted a comment Jun 5, 2018
@wouldsmina
Copy link
Member

erreur durant l'update :

PHP Fatal error:  Uncaught mysqli_sql_exception: No such file or directory in /var/www/html/includes/SQL.php:133
Stack trace:
#0 /var/www/html/includes/SQL.php(133): mysqli->__construct('localhost', 'libertempo', 'libertempo', '')

on dirait que le nom de la bdd ne passe pas

@prytoegrian
Copy link
Member Author

C'est tout ce qu'il y a ? :( Je vais creuser ce weekend. Tu peux me dire à quelle étape il s'est vautré ?

@prytoegrian
Copy link
Member Author

NB: ne pas oublier de sauvegarder avant le destroy

@wouldsmina
Copy link
Member

désolé pour le retard, l'erreur complète sur un make update :

App/Tools/update
#!/usr/bin/env php
Mise à jour…
Contrôles généraux…
PHP Fatal error:  Uncaught mysqli_sql_exception: No such file or directory in /var/www/html/includes/SQL.php:133
Stack trace:
#0 /var/www/html/includes/SQL.php(133): mysqli->__construct('localhost', 'libertempo', 'libertempo', '')
#1 /var/www/html/includes/SQL.php(55): includes\Database->__construct('localhost', 'libertempo', 'libertempo', '')
#2 /var/www/html/includes/SQL.php(47): includes\SQL->__construct('localhost', 'libertempo', 'libertempo', '')
#3 /var/www/html/includes/SQL.php(32): includes\SQL::singletonWithoutDb()
#4 /var/www/html/App/Tools/update(64): includes\SQL::existsDatabase('libertempo')
#5 {main}
  thrown in /var/www/html/includes/SQL.php on line 133
Makefile:16 : la recette pour la cible « update » a échouée
make: *** [update] Erreur 255

c'est sous mondaran, connecté en root et les fichiers appartiennent à www-data

@wouldsmina
Copy link
Member

oublie ce que je t'ai dit, ça vient de mon install

@wouldsmina
Copy link
Member

BPM!

@prytoegrian
Copy link
Member Author

\o/

@prytoegrian prytoegrian merged commit 5472084 into develop Jul 2, 2018
@prytoegrian prytoegrian deleted the pry/redirInstall branch July 2, 2018 21:33
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants