zestedesavoir / zds-site

Cœur du projet technique de Zeste de Savoir
https://zestedesavoir.com
Other
269 stars 161 forks source link

Commande pour remettre à zéro l'espace de dev #5642

Open A-312 opened 4 years ago

A-312 commented 4 years ago

Lorsqu'on n'a pas installé l'installation depuis longtemps, il faudrait pouvoir remettre à zéro automatiquement le repertoire zds-site :

  1. supprimer node_modules et zmd/node_modules
  2. supprimer base.db
  3. supprimer zdsenv
  4. supprimer contents-private + contents-public
Arnaud-D commented 4 years ago

En tant que développeur occasionnel, j'aimerai pouvoir mettre à jour mon environnement de développement sans réfléchir du tout et sans recloner tout. Avec l'objectif d'avoir zéro friction sur cette étape-là.

Ce qui me convient, c'est quelque chose du genre (ou encore plus simple, mais n'abusons pas ;-) ) :

git pull  upstream
git checkout dev
git merge upstream/dev
make install-linux

Cette procédure a échoué chez moi, et j'ai dû supprimer le virtualenv et un fichier sur les conseils des développeurs.

Je pense que make install-linux devrait faire lui-même cette opération de ménage par défaut. Les utilisateurs avancés peuvent toujours utiliser les différents composants séparément pour une installation sur mesure.

Autrement, on pourrait ajouter une question pour demander si on veut remettre à zéro l'environnement ou conserver ce qui existe. make install-linux demande déjà de choisir la distribution pour laquelle on installe, une interaction en plus ne serait pas un gros dépaysement.

Sinon, une partie stand-alone du makefile pourrait faire le job. Cette solution a pour moi un avantage : si la procédure d'installation change significativement, il est aussi possible que la procédure de nettoyage change aussi (et donc que le nouveau script d'installation ne sache pas comment nettoyer l'ancien).

Dans ce cas, on aurait quelque chose comme ça :

make cleanup  # utilise la procédure de la version non mise à jour
git pull upstream  # on met à jour depuis l'upstream
git checkout dev
git merge upstream/dev
make install-linux  # installation sur une base propre
Arnaud-D commented 4 years ago

J'ai encore eu besoin de suivre cette procédure. Comme ce ticket est finalement une source d'information utile, on pourrait l'intégrer à la doc (si ce n'est pas déjà fait, mais je n'ai rien trouvé), à défaut d'avoir une commande dédiée.

Je pense qu'on pourrait intégrer un paragraphe quelque part dans cette partie : https://docs.zestedesavoir.com/install.html .

A-312 commented 4 years ago

Fait le si tu juges important par contre je ne trouve pas que l'intégrer dans cette partie de la doc soit adapté, une partie : "Maintenir son espace de dev à jour" serait plus adapté.

D'ailleurs une partie est décrit ici : https://zestedesavoir.com/forums/sujet/324/comment-contribuer-comprendre-comment-suivre-le-workflow/

Arnaud-D commented 4 years ago

Je pense vraiment que ça devrait être dans la partie installation, parce que c'est utile pour refaire une installation propre sans tout recloner. Dans plein de cas, la commande make install-linux (ou équivalent) ne suffit pas, parce qu'elle ne supprime rien du tout et ça ne réinstalle pas correctement. Ça m'est arrivé au moins deux fois déjà.

C'est la partie « facile » qui est décrite dans le sujet du forum. Je l'ai pas trouvée super claire d'ailleurs quand je m'en suis servi la première fois. Notamment, c'est difficile de faire la part des choses entre la première fois et une resynchronisation. J'ai réussi à mieux comprendre le principe grâce à cette explication-là.

Tout ça pourrait faire l'objet d'une une partie « maintenir son espace de dev », mais ça devrait être selon moi plus selon l'idée de guides comme @Situphen a commencé à faire (PR #5704). On y reprendrait des infos présentes ailleurs évidemment.

Qu'en penses-tu @A-312 ?

A-312 commented 4 years ago

Je pense toujours que si je cherche à maintenir mon espace de dev, je ne vais pas fouiller dans l'explication de la première installation de l'espace de dev) mais dans la partie utilisation.

Arnaud-D commented 4 years ago

J'ai découvert qu'on a déjà une cible make qu fait une partie du boulot :

wipe-db: ## Remove the database and the contents directories
    rm -f base.db
    rm -rf contents-private/*
    rm -rf contents-public/*

On peut s'en servir à travers new-db :

new-db: wipe-db migrate-db generate-fixtures
Situphen commented 2 years ago

On pourrait imaginer une commande Make brand-new qui lance clean puis update puis new-db, cela devrait faire l'affaire dans 99% des cas, non ?

Arnaud-D commented 2 years ago

L'idée est d'avoir un truc vraiment propre sans avoir à changer quoi que ce soit au dépot local.

Un cas important selon moi que ton idée ne gère pas est de supprimer le venv et les modules js. C'est utile notamment quand on fait de la QA sur des procédures d'installation. Un souci typique, c'est tu ne peux pas tester les dépendances correctement sans ça, parce que tu risques d'avoir des choses installées d'avant. Quand tu fais update ça ne gère pas ce cas.

Donc je verrais plutôt un clean-all qui fait clean + supprimer le venv + wipe-db + rm sur les dossiers node et zmd. Bref, un truc qui ne laisse que les fichiers versionnés et les modif globales sur le système.