====== Développement d'ADH5 ====== ==== Tests ==== Il faut **absolument** lancer les tests en local avant de push vos commits sur la branche master. Pour cela, il suffit de lancer les tests depuis le script scripts/test.sh à la racine du projet. Tout push (changement de release sur le dépôt git) entraîne la construction de la pipeline dev (nouvelle version d'ADH5-dev). ==== Rspec ===== Rspec permet de définir des tests unitaires. Les fichiers utilisés par rspec sont dans le répertoire frontend/spec. Les tests présents actuellement ne sont pas suffisants, il faudrait en écrire d'autres. ==== Cucumber ==== Cucumber permet de définir des tests de comportement, comprendre comportement d'un utilisateur sur le site. Les fichiers utilisés par cucumber sont dans le répertoire frontend/features L'exemple ci-dessous est plutôt explicite. Scénario: L'adhérent quitte sa chambre Soit un utilisateur ayant les droits 1337 Soit le vlan dual stack 41 avec les adresses IPv4 157.159.41.0/24 et les adresses IPv6 2001:660:3203:430::/64 Soit un adhérent ayant la chambre 1005 dans le vlan 41 Et une date de départ dans 1 an Et un ordinateur avec pour mac 00-11-22-33-44-55 Et pour ipv4 157.159.41.10 Et pour ipv6 2001:660:3203:430::a10 Quand l'utilisateur s'identifie Et entre le login de l'adhérent Et clique sur Rechercher Et clique sur Aucune chambre Alors il voit une ligne avec 00-11-22-33-44-55 En attente En attente Et il voit une ligne avec Changement de chambre 1005 vers aucune Pour comprendre ce fichier, cucumber a besoin de //steps// qui permettent de programmer les différentes actions. Les //steps// permettent grâce à l'écriture de REGEX d'appeler des méthodes sur des objets définis avec des mots en français. Vous pouvez accéder à ADH5-dev (derrière le vpn) à l'adresse suivante : [[http://adh5-dev.minet.net:8080/|ADH5-dev]]. Il faut tester toutes les nouvelles fonctionnalités dans cet environnement avant de déployer en production. ==== Git ==== La branche master est la branche de développement, elle correspond à la version d'ADH5-dev. Pour passer tous les commits en développement vers la production, il faut juste bouger le pointeur de production vers master. Ce n'est pas un merge ! git branch -f production master Puis pusher votre branche production sur origin/production ==== Déployer ==== Le déploiement se fait via Jenkins, accessible (derrière le VPN) [[http://ci.minet.net:8080|ici]]. Il y a deux pipelines regroupant chacune une série de tasks, une pour la dev et une pour la prod. La pipeline dev s'enclenche automatiquement lors de changements de version suite à un push de votre branche master sur origin/master. Contrairement au déploiement d'ADH5-dev, le déploiement en production se fait manuellement, souvent pendant une maintenance (car cela entraîne une coupure des services dépendant d'ADH5 : Radius, DHCP, etc). En cas de problèmes, penser à consulter la [[wiki:/services/adh5/deployer|FAQ]] et à la compléter. ==== Mettre à jour les fabricants de cartes réseau (Apple) ==== $ wget https://raw.github.com/inetlms/lms/master/lib/ethercodes.txt $ grep "Apple" ethercodes.txt | sed 's/:/,/' > /frontend/db/vendors.txt