Développement logiciel au Greyc

Transcription

Développement logiciel au Greyc
Développement logiciel au Greyc
Bonnes pratiques : Outils / Méthodes
Service Développement
GREYC, CNRS UMR 6072
[email protected]
Novembre 2015
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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
Créer un projet
4
Subversion / Git
Service Développement (GREYC)
5
Choisir son gestionnaire de
versions
Récupérer le dépôt du projet
Créer votre projet
Propager les nouveautés
Récupérer les évolutions
Consulter l’état du projet
Créer une branche
Propager / Partager une branche
Fusionner avec le tronc
Fusionner avec la branche master
Supprimer une branche
Consulter la liste des branches
En savoir plus
Conclusion
Développement logiciel au Greyc
Novembre 2015
2 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
3 / 40
Pratiques d’intégration continue
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
4 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
5 / 40
Règles 2, 3, 6 et 10
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
6 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
7 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
8 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Java, IDE
2 Environnements de Développement Intégrés (IDE) sont installés sur les
machines :
Eclipse
Netbeans
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
9 / 40
Eclipse vs Netbeans
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
10 / 40
La forge, présentation
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
11 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
12 / 40
Créer un projet (Étape 2 et 3)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Étape 2 : Cliquer sur l’onglet ”projets”
Étape 3 : Cliquer sur ”Nouveau projet”
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
13 / 40
Créer un projet (Étape 4)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Étape 4 : Complétez les champs du formulaire, sans oublier le champ
”Description”
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
14 / 40
Créer un projet (Étape 5), confirmation
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
15 / 40
Choisir son gestionnaire de versions
Service Développement (GREYC)
Développement logiciel au Greyc
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Novembre 2015
16 / 40
Récupérer le dépôt du projet (subversion)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
17 / 40
Récupérer le dépôt du projet (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
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 2015
18 / 40
Créer votre projet (exemple avec maven)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Maven permet de créer des structures de projets prêtes à l’emploi
Exemple
$ mvn archetype:generate
-DgroupId=fr.unicaen.mon.projet
-DartifactId=mon-projet
-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 2015
19 / 40
Créez votre projet (ex. à l’aide de maven)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple de création de projet à l’aide du modèle
maven-archetype-quickstart
Exemple
$ find -type f
./mon-projet/pom.xml
./mon-projet/src/main/java/fr/unicaen/mon/projet/App.java
./mon-projet/src/test/java/fr/unicaen/mon/projet/AppTest.java
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
20 / 40
Créez votre projet (exemple avec maven)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Pour en savoir plus :
https://maven.apache.org/
Qu’est-ce que Maven ? :
https://maven.apache.org/what-is-maven.html ;
Quelles sont ses principales fonctionnalités ? :
https://maven.apache.org/maven-features.html ;
La liste des questions fréquemment posées :
https://maven.apache.org/general.html.
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
21 / 40
Propager les nouveautés (subversion)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
On procède ensuite à l’enregistrement du projet sous subversion (2 étapes)
Exemple
$ svn add mon-projet
A
mon-projet
A
mon-projet/pom.xml
...
$ svn -m ’import initial projet mon-projet’ commit
Ajout
mon-projet
Ajout
mon-projet/pom.xml
...
Transmission des données ...
Révision 22 propagée.
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
22 / 40
Propager les nouveautés (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Avec git, les commandes sont les suivantes (étapes 1 et 2)
Exemple
$ git add mon-projet/
$ git commit
[master ae35e36] ajout de l’archetype projet maven
...
3 files changed, 69 insertions(+)
create mode 100644 mon-projet/pom.xml
create mode 100644 mon-projet/src/main/java/fr/unicaen/mon/projet/A
create mode 100644 mon-projet/src/test/java/fr/unicaen/mon/projet/A
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
23 / 40
Propager les nouveautés (avec git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Avec git, les commandes sont les suivantes (étape 3)
Exemple
$ git push origin master
Username for ’https://forge.greyc.fr’: couronne
Password for ’https://[email protected]’:
Counting objects: 18, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (17/17), 1.52 KiB | 0 bytes/s, done.
Total 17 (delta 0), reused 0 (delta 0)
To https://forge.greyc.fr/git/sandbox-git/
2ad1c22..2f5271e master -> master
push, envoi des modifications ;
origin, l’identifiant de connexion du serveur git ;
master, branche principale qui contient les modifications que l’on veut
propager.
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
24 / 40
Sommaire
Intégration continue
Consulter la/le(s) connexion(s) distante(s) (git)
Java
La forge
Subversion / Git
Conclusion
le mot-clé origin sert à identifier l’URL de connexion, utile notamment pour
les opérations push / pull.
Exemple
$ git remote -v
origin https://forge.greyc.fr/git/sandbox-git/ (fetch)
origin https://forge.greyc.fr/git/sandbox-git/ (push)
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
25 / 40
Récupérer les évolutions (subversion)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Subversion, sur le tronc ”trunk”
$ svn update
Mise à jour de ’.’ :
U
trunk/diaporama.tex
Actualisé à la révision 47.
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
26 / 40
Récupérer les évolutions (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Git, sur la branche master
$ git pull origin master
Password for ’https://[email protected]’:
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
Depuis https://forge.greyc.fr/git/sandbox-git
* branch
master
-> FETCH_HEAD
9fc44e6..a45e276 master
-> origin/master
Mise à jour 9fc44e6..a45e276
Fast-forward
mon-projet/pom.xml~ | 18 -----------------1 file changed, 18 deletions(-)
delete mode 100644 mon-projet/pom.xml~
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
27 / 40
Consulter l’état du projet (subversion)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Subversion
trunk$ svn status
?
diaporama.aux
?
diaporama.log
?
diaporama.nav
?
diaporama.out
M
diaporama.pdf
?
diaporama.snm
M
diaporama.tex
?
diaporama.toc
Pour propager la modification du fichier diaporama.tex : svn commit
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
28 / 40
Consulter l’état du projet (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Git
$ git status
Sur la branche bilinguisme
Modifications qui ne seront pas validées :
(utilisez "git add <fichier>..." pour mettre à jour ce qui
sera validé)
(utilisez "git checkout -- <fichier>..." pour annuler les
modifications dans la copie de travail)
modifié:
build.xml
aucune modification n’a été ajoutée à la validation (utilisez "git a
Pour propager la modification du fichier build.xml : git add build.xml,
puis git commit et enfin git push origin bilinguisme
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
29 / 40
Créer une branche (subversion)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Subversion
$ svn copy trunk/ branches/november-2015
A
branches/november-2015
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
30 / 40
Créer une branche (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Git
$ git branch november-2015
$ git checkout november-2015
Basculement sur la branche ’november-2015’
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
31 / 40
Sommaire
Intégration continue
Propager / Partager une branche (subversion)
Java
La forge
Subversion / Git
Conclusion
Exemple avec Subversion
$ svn commit -m ’nouvelle branche : november-2015’
Ajout
branches
Ajout
branches/november-2015
Ajout
(bin) branches/november-2015/diaporama.pdf
Ajout
branches/november-2015/diaporama.tex
Transmission des données ....
Révision 49 propagée.
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
32 / 40
Propager / Partager une branche (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Git
$ git push origin november-2015
Password for ’https://[email protected]’:
Total 0 (delta 0), reused 0 (delta 0)
To https://[email protected]/git/valorisation
* [new branch]
november-2015 -> november-2015
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
33 / 40
Fusionner avec le tronc (subversion)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Subversion
trunk$ svn merge ../branches/november-2015/
--- Fusion de r49 à r52 dans ’.’:
U
diaporama.tex
--- Stockage des informations de fusion (mergeinfo) de r49 à r52 dan
U
.
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
34 / 40
Fusionner avec la branche master (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Subversion
$ git checkout master
Basculement sur la branche ’master’
$ git merge bilinguisme
Merge made by the ’recursive’ strategy.
build.xml
valorisation-domain-beans/src/main/resources/sql/update-151125.sql
valorisation-[...]/jsp/auth/form/commons/concepteurs.jsp
valorisation-[...]/jsp/auth/form/commons/informationsUtiles.jsp
valorisation-[...]/jsp/auth/form/commons/keywords.jsp
valorisation-[...]/jsp/auth/form/commons/langages.jsp
valorisation-[...]/jsp/viewLogiciel.jsp
valorisation-[...]/jsp/viewMentionsLegales.jsp
8 files changed, 182 insertions(+), 131 deletions(-)
create mode 100644 valorisation-domain-beans/src/main/resources/sql
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
35 / 40
Sommaire
Intégration continue
Supprimer la branche november-2015 (subversion)
Java
La forge
Subversion / Git
Conclusion
Exemple avec Subversion
$ svn delete branches/november-2015/
D
branches/november-2015
[...]
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
36 / 40
Supprimer la branche november-2015 (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Git
$ git branch -d november-2015
Branche november-2015 supprimée (précédemment 0ca584a).
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
37 / 40
Consulter la liste des branches (git)
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Exemple avec Git
$ git branch
bilinguisme
* master
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
38 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
En savoir plus
Sur subversion
http://svnbook.red-bean.com/
Sur Git
https://git-scm.com/
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
39 / 40
Sommaire
Intégration continue
Java
La forge
Subversion / Git
Conclusion
Conclusion
Le portail du laboratoire
https://portail.greyc.fr/
Service Développement (GREYC)
Développement logiciel au Greyc
Novembre 2015
40 / 40