====== Mise à jour de la version Chapril mobilizon ======
Pour fusionner les avancées de l'upstream avec la branche Chapril, il nous faut fusionner les modifications publiées dans le tag le plus récent.
===== Plan d'action général =====
* Fusionner la nouvelle version dans notre branche "chapril"
* Communiquer le début de migration
* Compiler les assets du frontend et les envoyer sur la VM biliz
* Prendre les dernières modifications et migrer la base de données
* Relancer le service mobilizon
* Vérfier que tout est bon
* Communiquer la fin de migration
Voici le détail des opérations:
===== Localement =====
Admettons que vous avez les sources de mobilizon sur votre poste de travail dans le dossier ''/tmp/mobilizon'' et que la dernière version est la **5.1.2**. Pour faire l'upgrade vers le tag le plus récent:
* Se positionner sur la branche main
* Récupérer les avancées de la branche distante du dépôt upstream, tags inclus
* Si vous n'avez pas ajouté le dépot upstream, ajoutez le en https ou en ssh selon votre préférence
* ''git remote add upstream https://framagit.org/kaihuri/mobilizon.git''
* ''git remote add upstream git@framagit.org:kaihuri/mobilizon.git''
* Se positionner sur la branche du chapril
* Fusionner le tag le plus récent vers la branche chapril avec un git merge.
* pour voir la liste des tags: ''git tag''
* résoudre les éventuels conflits
* Vérifier que tout fonctionne bien
* en effectuant les migrations de base données ''mix ecto.migrate''
* en lançant localement le serveur ''mix phx.server'' et en naviguant sur http://localhost:4000
* une fois les conflits résolus, modifications faites et le lint vérifié, faire un commit et un tag chapril-x.x.x (en mettant le bon numéro de tag, celui que l'on vient de fusionner) les envoyer sur la forge du Chapril.
git checkout main
git pull upstream main
git fetch --tags upstream
git checkout chapril
git merge 5.1.2
git tag chapril-5.1.2
git push --all
Nous pouvons maintenant mettre à jour la VM biliz en production.
* Recompiler les assets du frontend et les mettre dans le dossier live/priv/static
cd /var/www/html/mobilizon/js && yarn run build
* Syncroniser les assets compilés avec la VM biliz (nécessite d'avoir **rsync** installé sur la VM)
rsync -aP priv/static/* root@biliz.cluster.chapril.org:/srv/mobilizon.chapril.org/live/priv/static --delete
===== Sur la VM biliz =====
* Se connecter à la VM biliz, aller dans le dossier "live", se mettre en tant qu'utilisateur mobilizon et récupérer les dernières modifications de la branche chapril. (attention à avoir comme dépot d'origine le dépot de la forge april, et non l'upstream pour bien avoir votre branche personnelle) Ce qui nous amène sur le tag le plus récent:
su mobilizon
cd /srv/mobilizon.chapril.org/live
git checkout chapril
git pull --tags origin && git pull origin chapril
* Stopper le service mobilizon: ''service mobilizon stop''
===== Migrer le backend de mobilizon =====
Il n'est pas nécessaire de le faire à tous les coups, si vous aviez remarqué que seule la partie frontend changeait, vous pouvez relancer le service après avoir uniquement mis à jour les assets de priv/static et faire ''service mobilizon restart''. Ne pas oublier de spécifier l'environnement de prod.
su -H mobilizon MIX_ENV=prod mix deps.get
su -H mobilizon MIX_ENV=prod mix ecto.migrate
* Remettre l'utilisateur mobilizon comme owner des fichiers
chown -R mobilizon:mobilizon /srv/mobilizon.chapril.org/live
* Relancer le service mobilizon: ''service mobilizon start'' ce qui doit prendre environ 5 secondes sur Biliz.
===== Vérifications =====
* vérifier les erreur dans le journal du service : ''journalctl -fu mobilizon -n1000''
* si c'est bon, interrompre la lecture du journal d'erreurs: Ctrl + C.
* vérifier le frontend sur https://mobilizon.chapril.org , nécessite un vidage de votre cache navigateur (ctrl + R)
* Communiquer la fin de mise à jour sur les canaux qui vont bien.