Précédent : 2. Architecture du projet
Le processus de développement de la plateforme En Marche est basé sur certains fondamentaux :
- Lorsque vous travaillez sur un sujet, annoncez-le sur l'issue associée au sujet afin de tenir tout le monde informé de votre travail ;
- Créez une pull request le plus rapidement possible (même si elle ne contient que très peu de code) et marquez là "En cours" : cela permettra à tous de voir l'avancement de votre travail et cela vous permettra à vous de lancer les tests automatiques et les analyses du style de code ;
- A chaque ajout, modification et suppression de code, il est important de garder une suite de tests à jour et fonctionnelle. En testant ainsi toutes les fonctionnalités que nous ajoutons à la plateforme, nous serons capables dans le futur de corriger des bugs et d'ajouter des fonctionnalités en étant certains que ces changements n'entraîneront pas de problèmes.
Typiquement, lorsque vous développez sur la plateforme En Marche, nous vous conseillons suivre les étapes suivantes :
- Développez votre fonctionnalité
- En parallèle, manipulez manuellement le site internet en local pour tester votre code (il vous faudra bien sûr avoir le projet en local)
- Une fois que vous pensez avoir terminé votre fonctionnalité, ajoutez des tests automatisés afin de vérifier le bon fonctionnement de la fonctionnalité. Cette étape sera utile tout au long du projet pour vérifier que votre fonctionnalité est encore stable après des changements dans le code. Il est important que vous testiez tous les scénarios possibles de votre fonctionnalités afin que nous soyons alertés si un problème se produit avec.
Dans le cadre de la résolution de problème, il est conseillé de démarrer par créer un test automatisé exposant le problème (un test automatisé ne passant pas les vérifications car il montre qu'il y a un problème). De cette manière, une fois le problème exposé avec le test, vous pouvez aisément vérifier sa résolution, et en l'ajoutant à notre suite de tests dans le projet, nous serons assurés que ce problème ne réapparaitra pas.
Afin de développer correctement, vous devez bien évidemment avoir installé le projet en local mais aussi être capable de lancer les tests automatisés afin de vous assurer que votre code n'a pas entrainé de problème dans le reste de l'application.
Il y a deux groupes de tests automatisés : les tests serveur (Symfony) et les tests client (React/JSX).
Lorsque vous êtes dans le dossier du projet, lancez la commande suivante :
make tu # tests unitaires
make tf # tests fonctionnels
Lorsque vous êtes dans le dossier du projet, lancez la commande suivante :
make tj
Lorsque vous travaillez, votre code est stocké dans votre "fork", une copie du repository principal dans votre espace personnel. Lorsque vous travaillez sur le code, vous aurez sans doute besoin de mettre à jour votre repository personnel à partir du repository principal.
Pour cela, dans le répertoire du projet, quand vous souhaitez synchroniser votre repository personnel avec le principal, lancez les commandes suivantes :
$ cd /dossier/du/projet
$ git checkout master
$ git pull [email protected]:EnMarche/en-marche.fr.git
$ git push
Une fois synchronisé, vous devez aussi synchroniser les dépendances PHP et JavaScript (si jamais elles ont changé par rapport au repository principal) :
$ cd /dossier/du/projet
$ make deps
Uncomment the blackfire
service in docker-compose.override.yml
Set the environment variables BLACKFIRE_CLIENT_* AND BLACKFIRE_SERVER_*, which are available in https://blackfire.io/account.
Download the companion here and start profiling !
You can profile CLI commands like this:
docker-compose run --rm app blackfire run **You command**
For example, profiling phpunit:
docker-compose run --rm app blackfire run vendor/bin/phpunit