Technique pour tester rapidement et intégrer vos PR.

Les sujets de cette catégorie concernent le développement du logiciel MedshakeEHR.
Avatar de l’utilisateur
Bertrand
Messages : 177
Inscription : 21 juil. 2020, 18:08
Localisation : Dans le grand bain
Contact :

Technique pour tester rapidement et intégrer vos PR.

Message non lu par Bertrand »

Salut !

Si je ne peux plus passer des heures sur le logiciel, j'aimerai pouvoir intégrer vos PR et déployer rapidement une version de test.
Je ne sais pas comment faire ça. Je suis toujours resté à l'ancienne, avec mon serveur apache en local, mariadb, php ... et j'ai intégré le tout.
J'ai le sentiment qu'on peut faire beaucoup mieux sans avoir à écraser ma version locale à chaque fois.

Qui m'oriente ? Merci !

B.

MedShakeEHR : Le Logiciel Médical Modulaire Libre
http://www.medshake.app/

MedShake : communauté médicale bien fraîche (et un peu secouée) !
https://www.medshake.net/

marsante
Messages : 175
Inscription : 25 juil. 2020, 18:42

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par marsante »

Bonjour Bertrand,

J'espère que ça va ?

J'avais mis en place https://github.com/MedShake/MedShakeEHR ... ls/vagrant pour justement mettre en ligne et détruire à la volée des machines virtuelles de tests. Normalement le paramètre stage:"testing" synchronise les sources (si ce n'est pas le cas, il faudra me le dire que je le corrige). Normalement nos forks, s'ils sont à jour doivent disposer de ce dossier. Vagrant est dans les dépôts d'Ubuntu et dérivées, pour Debian il faut rajouter le dépôt, même principe il me semble pour virtualbox. Un vagrant up ça lance et installe Medshakeehr avec Ansible (avec la fibre et un ssd, il n'y a même pas le temps de se faire un café sinon c'est le moment d'y penser), un vagrant ssh pour accéder au shell, un vagrant halt pour arrêter, un vagrant destroy pour détruire la machine (il y a aussi un plugin pour synchroniser le fichier host du pc hôte que je n'ai pas encore testé pour automatiser encore plus). Vagrant snapshot aussi, si envie de faire les choses bien et de ne pas enchaîner les vagrant up et destroy (je plaide coupable)
Au passage ça pourrait aussi être une méthode pour automatiser la sortie d'une machine virtuelle de démonstration à chaque nouvelle version, mais je n'ai pas encore compris comment installer les modules en cli et comment faire fonctionner villagepeople, ça fait partie de mes projets :D

Deuxième astuce docker. L'avantage et qu'on peut se créer un volume qui se synchronise directement avec le container (c'est comme ça que j'ai pu tester finalement php8, en me logguant sur un container php7 pour avoir le saint cookie et en relançant en php8). Quand je tente des bidouilles sur les templates, controller et autres, c'est ce que j'utilise. Je modifie sur mon ide je recharge la page et je regarde ce que ça donne. Inconvénient il y a des bugs propres à la conteneurisation. Exemple typique sur LXC ou Docker, la page des taches crons "n'enregistre" pas les cases cocher et ce n'est pas que visuel. Je me suis retourné le cerveau à essayer de comprendre d'où ça pouvait venir (dans les containers lxc à priori il y a le lamp en entier par exemple donc ce n'est pas une question d'isolement déjà). Donc tout n'est visiblement pas testable. Autre problème je n'ai jamais réussi à faire fonctionner les versions de Indelog et de bugeaud, j'ai donc fait ma propre version qui n'est pas à proprement parlé une dockerisation (c'est en cours de réflexion) de medshakehr mais qui est une dockerisation du serveur lamp de medhsakehr. Il a l'avantage de régler les problèmes rencontrés par Indelog et bugeaud sur le sha de composer, en dockeurisant composer, et gère le ssl et allége un peu le conteneur php de medshakeehr (de 200 ou 400 mo je ne sais plus, ça reste un beau bébé de 800mo), mais présente encore des bugs. Notamment lors de la validation de la base de données, il faut rafraichir pour enlever un message d'erreur d'où le fait que je ne vous l'avais pas encore partagé.
Pour les plus curieux et prêt à subir des trucs bizarres c'est par ici [https://github.com/marsante/MedShakeEHR ... ompose.yml

Après moi je ne suis pas développeur, jusqu'à présent j'ai surtout corrigé des petits trucs qui ne nécessite pas des tests de fou et monter et détruire une VM est suffisant, peut être que Indelog à des méthodes plus propres, parce que moi j'ai une longue liste de cadavre de vm derrière moi :lol: j'ai entendu parlé de test unitaire quelque part, mais vu le niveau que j'ai pu démontrer en php jusqu'à présent, ce n'est pas moi qui vais pouvoir aider :oops:

Dernier point j'avais vu une équipe de développeur sur github, se répartir le travail avec ceux peu technique qui géraient les réponses des issues ou les étiquetaient pour les plus techniques, de même pour les pullrequest et les développeurs techniques qui reviewaient le code. Je pensais que github permettait de donner des rôles fins à chaque utilisateur et que ça pouvait être cool de s'organiser comme ça. Sauf que de ce que j'ai pu comprendre de la doc c'est du tout ou rien et ça peut vite amener à des conneries.

Avatar de l’utilisateur
Indelog
Administrateur
Messages : 71
Inscription : 10 juil. 2020, 10:06

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par Indelog »

Bonsoir,

Vite fait, j'ai créé une branche sur mon dépot git qui merge toutes les PR en attente : https://github.com/indelog/MedShakeEHR-base. Elle peut être utilisée pour créer une version de test qui inclue toutes les "nouveautés".

Attention, le commit de marsante pour composer crée des problèmes chez moi :

  • La version pour https://github.com/fr33z00/jquery.panzoom/tags n'est plus correctement identifié (composer ne trouve pas la version avec un t minuscule pour v3.2.2.1+1touch).
  • La version jQuery installé est différent et pose de soucis de compatiblités.

Après, c'est peut être car j'utilise la version de composer des dépôts Debian 11 et non la toutes dernière.

Ma branche intègre la modification de marassante, mais quand j'installe MedShake je dois réstaurer l'ancienne version.

Pour répondre a marasante, je travaille aussi sur une méthode pour déployer des instances MedShake pour de la prod ou du dev. J'aimerais aussi pouvoir déployer une instance de test pour le public, mais il faut que celle ci soit jetable (qu'elles pussent être détruites et recréer à la volé) et faite à partir d'une técho légère que je pusse faire tourner sans difficultés sur un petit serveur (donc pas de visualisation complète). J'ai laissé tomber ma première approche avec Docker (la gestion des images a finis par me saoulé), à la place, je me suis tourné vers systemd-nspawn pour la conteneurisation des instances + btrfs pour la gestion des d'instatanés pour le conteneur + Ansible pour automatiser la création / destruction. Pour le moment j'ai encore du travail, il me faut me faire un rôle pour apache qui me convienne (cellui de Geerlongguy est très bien mai il commence à montrer des limites dans mon cas de figure. Je publiai mes ressources une fois un peu plus mature et quand j'aurai eu le temps de documenter (je fais tellement un peu de tout que j'ai jamais le temps de finir ce que je commence, c'est très frustrant). Ceci n'aura pas pour but de remplacer ce qui a été fait, mais de proposer une alternative. Ma méthode possède certaine limite, notamment de fait de nécessite un serveur Debian et l'utilisation du système de fichier btrfs (surtout à cause des rôles Anssible qui s'attende à tomber sur ce cas de figure).

DEMAREST Maxime (Indelog)
marsante
Messages : 175
Inscription : 25 juil. 2020, 18:42

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par marsante »

Oups j'ai renvoyé une modif. Je n'avais testé que sur docker justement (sur une version 2.2 qui n'accepte plus les majuscules pour les autres dépendances). Je viens de retester sur VM et en effet il fallait modifier tous les autres sauf lui. Mes excuses. J'avais vu passer un article sur systemd-nspawn ça a l'air cool

Avatar de l’utilisateur
Bertrand
Messages : 177
Inscription : 21 juil. 2020, 18:08
Localisation : Dans le grand bain
Contact :

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par Bertrand »

Je suis toujours à la recherche d'un howto pour sur une Linux Mint 21 réussir à automatiser au mieux le déploiement d'une version intégrant les pull request afin de pouvoir tester amender.

Si quelqu'un passe par là et à le temps de me faire une rapide pas à pas, je suis très intéressé car je n'ai plus le temps d'acquérir des compétences pendant de longues heures et j'aimerais pouvoir me concentrer sur le peu de temps que j'ai au dev / maintien / intégration sur du PHP / HTML / JS / SQL.

Merci !

B.

MedShakeEHR : Le Logiciel Médical Modulaire Libre
http://www.medshake.app/

MedShake : communauté médicale bien fraîche (et un peu secouée) !
https://www.medshake.net/

marsante
Messages : 175
Inscription : 25 juil. 2020, 18:42

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par marsante »

Je mets à jour les outils pour développer rapidement :

Rector pour le lintage du code :
https://getrector.org/

Pour tester une installation fraîche et gérer ses VM : vagrant + virtualbox (ou libvirt) + ansible
https://github.com/MedShake/MedShakeEHR ... /README.md enfin après la mise à jour :D
Pour l'instant c'est toujours une image debian11 (qu'on peut rendre SID manuellement) ou utiliser une generic/ubuntu2204 (quoi qu'actuellement cette box est un poil bugguée).
L'avantage c'est qu'en un

Code : Tout sélectionner

vagrant destroy -f && vagrant up

on peut tout détruire et tout recommencer. Inconvénient ça reste une VM, en utilisant libvirt avec ksmtuned d'installé, ça permet de fortement réduire l'empreinte mémoire par rapport à virtualbox.

Pour tester une branche en particulier (du dépôt principal ou de forks), docker et docker-compose
https://github.com/marsante/MedShakeEHR-docker-compose
on peut modifier l'url du dépôt et sa version pour télécharger le tar.gz correspondant

Pour tester directement le code du repo à la volée
https://github.com/marsante/MedShakeEHR ... ree/docker

Inconvénient de docker c'est qu'une modification d'un fichier nécessitera un rebuild du container. J'ai normalement organisé l'ordre de build pour minimiser cet effet.

Je n'ai pas encore testé la solution d'Indelog avec le système de fichier btrfs

Je serai dispo la semaine prochaine s'il y a besoin d'une démo.

Avatar de l’utilisateur
Bertrand
Messages : 177
Inscription : 21 juil. 2020, 18:08
Localisation : Dans le grand bain
Contact :

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par Bertrand »

Merci.
Va falloir que je pige tout ça :-)

MedShakeEHR : Le Logiciel Médical Modulaire Libre
http://www.medshake.app/

MedShake : communauté médicale bien fraîche (et un peu secouée) !
https://www.medshake.net/

Avatar de l’utilisateur
Bertrand
Messages : 177
Inscription : 21 juil. 2020, 18:08
Localisation : Dans le grand bain
Contact :

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par Bertrand »

Mais mais, en fait tout est documenté déjà :D On me dit rien sur le contenu des mes repositories à moi ;-)

Bon, j'ai une erreur ...
Install or enable PHP's bcmath extension

J'ai eu ça en local, mais je n'ai pas encore pigé où il fallait que j'agisse pour faire en sorte que la VM la possède.

En tout cas, ça donne une impression de magie ce truc ... !

B.

MedShakeEHR : Le Logiciel Médical Modulaire Libre
http://www.medshake.app/

MedShake : communauté médicale bien fraîche (et un peu secouée) !
https://www.medshake.net/

Avatar de l’utilisateur
Bertrand
Messages : 177
Inscription : 21 juil. 2020, 18:08
Localisation : Dans le grand bain
Contact :

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par Bertrand »

Si j'ouvrais les yeux ... :D

MedShakeEHR : Le Logiciel Médical Modulaire Libre
http://www.medshake.app/

MedShake : communauté médicale bien fraîche (et un peu secouée) !
https://www.medshake.net/

Avatar de l’utilisateur
Bertrand
Messages : 177
Inscription : 21 juil. 2020, 18:08
Localisation : Dans le grand bain
Contact :

Re: Technique pour tester rapidement et intégrer vos PR.

Message non lu par Bertrand »

Pas suffisant apparemment j'ai ajouté dans le secrets.yml mais après un destroy puis up, même message ...

B.

MedShakeEHR : Le Logiciel Médical Modulaire Libre
http://www.medshake.app/

MedShake : communauté médicale bien fraîche (et un peu secouée) !
https://www.medshake.net/

Répondre