Développement logiciel au Greyc Bonnes pratiques : Outils / Méthodes Service Développement GREYC, CNRS UMR 6072 [email protected] Novembre 2014 Introduction L’intégration continue Outils à votre disposition Environnement de développement Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Sommaire 1 Intégration continue Objectifs Pratiques d’intégration continue Règle 1 Règles 2, 3, 6 et 10 Règles 5, 8 et 9 2 Java JRE, JDK IDE 3 La forge Présentation Service Développement (GREYC) 4 5 6 7 Créer un projet Subversion, Git et Maven Récupérer le dépôt du projet (subversion) Récupérer le dépôt du projet (git) Maven Enregistrer le nouveau projet (subversion) Enregistrer le nouveau projet (git) Import dans Eclipse Import dans Netbeans Conclusion Développement logiciel au Greyc Novembre 2014 3 / 30 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Objectifs L’intégrateur Assemble le travail de plusieurs programmeurs et livre le produit fini aux testeurs de l’équipe qualité. L’intégration continue Réduit les problèmes d’intégration ; Facilite la cohésion des logiciels. http://www.martinfowler.com/articles/continuousIntegration.html Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 4 / 30 Pratiques d’intégration continue Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Les pratiques d’intégration continue sont les suivantes : 1 Maintenir un dépôt unique de code source versionné ; 2 Automatiser les compilations ; 3 Rendre les compilations auto-testantes ; 4 Tout le monde commit sur le tronc chaque jour ; 5 Chaque commit doit construire le tronc sur une machine d’intégration ; 6 Mettre en œuvre des chaı̂nes de compilation rapides ; 7 Tester dans un environnement de production cloné ; 8 Chacun peut accéder facilement à la dernière version exécutable ; 9 Chacun peut voir ce qui se passe ; 10 Automatiser les déploiements. Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 5 / 30 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Règle 1 Maintenir un dépôt unique de code source versionné La forge du laboratoire, disponible pour l’ensemble du greyc, support assuré par le service développement et les administrateurs systèmes : redmine ; Le serveur de versions : subversion ou git ; https://forge.greyc.fr/ La forge du C.R.U. (développements inter-u) : sourcesup ; Le serveur de versions : subversion ou git ; https://sourcesup.cru.fr/ Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 6 / 30 Règles 2, 3, 6 et 10 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Automatiser les compilations ; Rendre les compilations auto-testantes ; Mettre en oeuvre des chaı̂nes de compilation rapides ; Automatiser les deploiements. Support assuré pour 3 outils populaires : Maven ; Ant ; Makefile. D’autres outils existent... libre à vous de choisir l’outil le mieux adapté à votre besoin... Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 7 / 30 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Règles 5, 8 et 9 Chaque projet doit construire le tronc sur une machine d’intégration ; Chacun peut accéder facilement à la dernière version exécutable ; Chacun peut voir ce qui se passe. Outils : Jenkins, serveur d’intégration continue (java). http ://localhost :8080/jenkins/ Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 8 / 30 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Java, JRE, JDK Les versions de java pré-installées sont : Open JDK 7 ; Oracle JDK 8. La variable JAVA HOME pointe sur l’emplacement du JRE. Il vous appartient de déclarer la version de java qui vous convient, par exemple, dans votre .bashrc. export JAVA HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre export JAVA HOME=/usr/local/jdk1.8 export PATH=${JAVA HOME}/bin:${PATH} Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 9 / 30 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Java, IDE 2 Environnements de Développement Intégrés (IDE) sont installés sur les machines : Eclipse 4.4 (Luna) Netbeans 7.4 Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 10 / 30 Eclipse vs Netbeans Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Parts de marché (2011) : Netbeans, 8 % Eclipse, 61 % En résumé... Netbeans, peut-être plus facile à prendre en main, plutôt moins utilisé ; Eclipse, plus sophistiqué, largement répandu. Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 11 / 30 La forge, présentation Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Un site web : https://forge.greyc.fr/ Un outil : redmine Dépôt de sources ; Wiki ; Gestion des anomalies ; Demandes d’évolutions ; Support. Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 12 / 30 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Créer un projet Étape 1 : se connecter à l’aide de son persop@ss Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 13 / 30 Créer un projet (Étape 2 et 3) Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Étape 2 : Cliquer sur l’onglet ”projets” Étape 3 : Cliquer sur ”Nouveau projet” Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 14 / 30 Créer un projet (Étape 4) Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Étape 4 : Complétez les champs du formulaire, sans oublier le champ ”Description” Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 15 / 30 Créer un projet (Étape 5), confirmation Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Étape 5 : Une confirmation par courriel vous est adressée Pour plus d’informations au sujet de la forge, consultez le séminaire sysadmin à l’adresse ci-dessous https://portail.greyc.fr/fr/ressources/seminaires_sysadmin https://portail.greyc.fr/fr/ressources/forge Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 16 / 30 Récupérer le dépôt du projet (subversion) Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion SVN ”checkout” afin de récupérer le dépôt du projet en local Exemple $ svn checkout https://forge.greyc.fr/svn/sandbox --username paul Domaine d’authentification : <https://forge.greyc.fr:443> SVN Reposi Mot de passe pour ’paul’ : A sandbox/trunk A sandbox/trunk2 A sandbox/tags A sandbox/tags/version-1.2 A sandbox/tags/version-1.2/yo Révision 21 extraite. Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 17 / 30 Récupérer le dépôt du projet (git) Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion git ”clone” afin de récupérer le dépôt du projet en local Exemple $ git clone https://forge.greyc.fr/git/sandbox-git/ Clonage dans ’sandbox-git’... Username for ’https://forge.greyc.fr’: couronne Password for ’https://[email protected]’: remote: Counting objects: 2, done. remote: Total 2 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (2/2), done. Vérification de la connectivité... fait. Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 18 / 30 Créer un projet à l’aide de maven Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Maven permet de créer des structures de projets prêtes à l’emploi Exemple ~/projets$ cd sandbox/trunk ~/projets/sandbox/trunk$ mvn archetype:generate -DgroupId=fr.unicaen.carotte -DartifactId=carotte -DarchetypeArtifactId=maven-archetype-quickstart groupId, le nom du paquetage qui identifie l’application de manière unique parmi tous les autres projets ; artifactId, le nom de votre projet, qui sera également le nom de votre jar ; archetypeArtifactId, l’identifiant du modèle de projet. Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 19 / 30 Créer un projet à l’aide de maven Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Exemple de création de projet à l’aide du modèle maven-archetype-quickstart Exemple ~/projets/sandbox/trunk$ find ... ./carotte ./carotte/pom.xml ... ./carotte/src/main/java/fr/unicaen/carotte ./carotte/src/main/java/fr/unicaen/carotte/App.java ... ./carotte/src/test/java/fr/unicaen/carotte ./carotte/src/test/java/fr/unicaen/carotte/AppTest.java Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 20 / 30 Créer un projet à l’aide de maven Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Maven propose plus de 1000 modèles de projets différents Exemple ~/projets/sandbox/trunk$ mvn archetype:generate Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 21 / 30 Les principales commandes Maven Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion mvn clean, nettoie le projet mvn compile, compile le projet mvn package, construit le jar, le war ou l’ear mvn install, dépose le jar dans le repository local maven mvn deploy, deploie le war dans l’environnement de test Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 22 / 30 Enregistrer le nouveau projet (subversion) Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion On procède ensuite à l’enregistrement du projet sous subversion Exemple $ svn add carotte A carotte A carotte/pom.xml ... $ svn -m ’import initial projet carotte’ commit Ajout carotte Ajout carotte/pom.xml ... Transmission des données ... Révision 22 propagée. Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 23 / 30 Enregistrer le nouveau projet (git) Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Avec git, les commandes sont les suivantes Exemple $ git add carotte/ $ git commit [master ae35e36] ajout de l’archetype projet maven ... 3 files changed, 69 insertions(+) create mode 100644 carotte/pom.xml create mode 100644 carotte/src/main/java/fr/unicaen/carotte/App.jav create mode 100644 carotte/src/test/java/fr/unicaen/carotte/AppTest $ Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 24 / 30 Import du projet dans eclipse Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion File > Import > Maven > Existing Maven Projects Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 25 / 30 Import du projet dans eclipse Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Sélection du dossier qui contient le pom.xml Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 26 / 30 Import du projet dans eclipse Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Naviguer dans le package explorer Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 27 / 30 Import du projet dans Netbeans Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion File > Open Project Sélectionnez le projet Maven Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 28 / 30 Import du projet dans Netbeans Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Cliquez sur Open Project, puis naviguez dans le project explorer Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 29 / 30 Sommaire Intégration continue Java La forge Subversion, Git et Maven Import dans Eclipse Import dans Netbeans Conclusion Conclusion Le portail du laboratoire https://portail.greyc.fr/ Le guide des bonnes pratiques en développement logiciel https://portail.greyc.fr/sites/default/files/documentation/ developpement/bonnes-pratiques.pdf Service Développement (GREYC) Développement logiciel au Greyc Novembre 2014 30 / 30