Nous fonctionnons en pull request. Pour contribuer, il suffit donc de forker le projet, puis :
- Créer une nouvelle feature-branche (
git checkout -b feature/my-new-feature
) - Implémenter la fonctionnalité sans oublier les tests
- Push
- Créer une pull request
Pour qu'une pull request soit acceptée, il faut :
- Que le build Travis et les tests soient valides
- Qu'au moins une personne fasse une revue de code et approuve la pull request
La documentation de l'application (choix techniques, architecture, etc.) se trouve dans le dossier documentation.
Le modèle de domaine (domain-model.mdj
) peut-être ouvert avec l'application StarUML.
Pour lancer l'application sur un poste de dev, nous utilisons IntelliJ Ultimate Edition et les plugins suivants :
- Maven
- Kotlin
- Lombok
- Spring Boot
- Spring Data
- Spring MVC
- Spring Security
- Cucumber for Java
Une fois installés vous pourrez alors lancer l'application avec les profils Spring noldap et fake_mongo.
Si le premier lancement ne fonctionne pas, il est nécessaire de faire un mvn clean install
ou pour gagner du temps :
mvn clean install -Dmaven.javadoc.skip=true -DskipTests
Nous avons rencontré un problème qui empêche l'application de démarrer : le bouton Run se grise après avoir cliqué dessus sans que rien ne se passe. Il semblerait que le problème vienne du plugin Gradle, il suffit de le désactiver. Si le problème persiste, il faut désactiver tous les plugins d'IntelliJ, et ne réactiver que ceux listés ci-dessus (en acceptant leurs dépendences).
Cela semble être un problème de compatibilité de plugins, espérons temporaire.
- Java 11 (correto, openjdk)
Choose between:
- Docker (see docker-compose &
Dockerfile
file)
And :
- MongoDB
Or just launch the application with those Spring Profiles: noldap
, fake_mongo
Build the whole project:
mvnw package
Build Docker image
docker build . -t hesperides/hesperides
Some variables are set as environment variables:
SPRING_PROFILES_ACTIVE
LDAP_URL
LDAP_DOMAIN
LDAP_USER_SEARCH_BASE
See boostrap/src/main/resources/application.yml
L'application étant une API REST, nous utilisons Postman pour effectuer des tests manuels. Vous pouvez consulter la documentation sur cette page.
Chaque feature/bugfix doit être testé automatiquement. Cela peut être un test fonctionnel et/ou un test unitaire. L'idéal est de créer un ou plusieurs tests avant d'implémenter une fonctionnalité ou de corriger un bug.
Nous utilisons le framework Cucumber pour les tests fonctionnels et privilégions les tests de fonctionnalités * end-to-end*. Nous utilisons les tests unitaires lorsque cela nous semble pertinent. Pour plus de context, _ cf._ LADR - Stratégie de tests
Pour exécuter tous les tests unitaires:
mvn test
Pour publier une branche spécifique sur Docker Hub, il suffit de lancer le workflow Build, test and publish
directement
via l'interface GitHub Actions >
Run workflow et de sélectionner la branche en question.
Si toutes les étapes sont passantes, le CI détecte le mode workflow_dispatch
et nous avons fait en sorte que cela
publie l'image Docker sur le Docker Hub lors de la dernière étape.