Cours LPSIL IDSE 2013

Documents pareils
Plan global Outils de développement et compilation. Ce que l on veut éviter. Plan. Git : gestion de code source et versionnement.

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

Environnement de Développement Outils Open-Source d'integration Continue. Exemple de Mise en Oeuvre

Les systèmes de gestion de version

Serveur Subversion Debian GNU/Linux

Projet de développement

Le système de gestion de version Git et GitHub

Motivations (many2many) Motivations (many2one) Sur le thème de la Version. La gestion de version. La gestion de configuration.

Serena Software. Damien Terrien Solution Architect

Systèmes de gestion de code source

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

S10 - Automatisez la compilation et le déploiement de vos applications IBM i avec Arcad Pack for Rational

Valorisez vos actifs logiciels avec Rational Asset Manager. Jean-Michel Athané, Certified IT Specialist IBM Rational Software

TD/TP 1 Introduction au SDK d Android

TP Git. Author : Cedric Dumoulin Date : 2 déc Rev : 9 Dec. 2014

Les logiciels de gestion de version exemple de GIT et application avec SmartGIT

Installation et prise en main

L Intégration Continue & Agilité

en SCÈNE RATIONAL Rational Démonstration SDP : automatisation de la chaîne de développement Samira BATAOUCHE sbataouche@fr.ibm.com

HISTOIRE D UNE DIGITAL FACTORY

INTEGRATION CONTINUE. Améliorer la qualité des logiciels et réduire les risques. Juillet 2009

Tutoriel git. Régis Briant, Youngseob Kim & Dmitry Khvorostyanov. Table des matières. 1 Configurer git 2

SonarQube : une autre vision de votre logiciel

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

Groupe Eyrolles, 2006, ISBN :

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

S9 - Contrôle des sources, gestion des demandes de changement et travail en équipe sous IBM i avec le produit RTC (Rational Team Concert)

Serveur de travail collaboratif Michaël Hoste -

Industrialisation de la chaîne de production : validation, intégration, tests

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

JOnAS Day 5.1. Outils de développements

Introduction à Eclipse

Enterprise Scrum Organisation des développements chez exo. Agile Tour Rennes 2010 / 10 / 07

Outils de développement collaboratif

Gestion de configuration

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés 2011/2012

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

La magie de SVN. Découverte & usage du logiciel

Ma stack d ou,ls agiles, tout un programme! OU COMMENT BÉNÉFICIER DES TECHNOLOGIES GRAND PUBLIC POUR AMÉLIORER ET OPTIMISER MES OUTILS LOGICIELS.

Les BRMS Business Rules Management System. Groupe GENITECH

FORMATION Offre de Formation - Packaging. Les bonnes pratiques du packaging avec Installshield et AdminStudio. Contact et inscriptions

Vers une meilleure gouvernance des plateformes d ingénierie

Guide des Développeurs SITools2 V3

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

APIs de table pour SQL Server

WebSpy Analyzer Giga 2.1 Guide de démarrage

Votre premier projet Android

C.M. 1 & 2 : Prise en main de Linux

SAINT-GOBAIN. DSI Groupe. Un outil ITSM pour renforcer la Gouvernance. V. Broussin 26 février 2013

Slony1 2.1 Londiste 3

Java à Murex: un retour d'expérience. Jean-Pierre DACHER & Craig MORRISON

Environnements et Outils de Développement Cours 1 Introduction

FusionInventory. I-Détails et explication de l installation de l agent FusionInventory

Gestion de documents

Gestion de projet Gestion de configuration Gestion de Conflits. Lydie du Bousquet Philippe Lalanda

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Environnements de développement (intégrés)

LA GOUVERNANCE, OU COMMENT RAPPROCHER LES ÉQUIPES DE DÉVELOPPEMENT ET D INFRASTRUCTURE

La gestion du cycle de vie des applications avec MICROSOFT TEAM FOUNDATION SERVER 2010

Maîtrisez la modernisation de votre patrimoine applicatif

Jalios Delivery Engine 1.0 (JADE) Manuel d installation et d exploitation

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

Un business model d éditeur open source

TP1. Outils Java Eléments de correction

L'agilité appliquée à nous-mêmes. Philippe Krief, PhD Development Manager IBM France Lab

Récapitulatif du stage 2014 première année BTS SIO. Sommaire

Tutoriel code::blocks

Celui qui vous parle. Yann Vigara

Rendez-vous la liberté avec Rational Quality Manager

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Réussir ses Déploiements Applicatifs

Part IV. Outils de dévéloppement pour le logiciel libre. Logiciel libre, une introduction. Support pour le dévéloppement collaboratif

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

bbc Launch Pad Juillet 2011 Version 10.0

Guide Installation Serveur Extensive Testing

Sauvegardes sous Mac OS X

Générer du code à partir d une description de haut niveau

Eclipse Process Framework et Telelogic Harmony/ITSW

Quelques mots à propos de Sage

Offre Référentiel d échange

Professeur superviseur Alain April

WEB15 IBM Software for Business Process Management. un offre complète et modulaire. Alain DARMON consultant avant-vente BPM

Correspondances Windows-Linux

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

IBM Power Systems - IBM i IBM Rational

Tutoriel d installation de Hibernate avec Eclipse

Famille IBM WebSphere Application Server

Data Tier Application avec SQL Server 2008 R2

FICHE TECHNIQUE Suite AdminStudio

LA QUALITÉ DE SERVICE

Guide Installation Serveur Extensive Testing

Liste des Formations

Convergence entre Sécurité et Conformité par l approche Software as a Service Présentation en avant-première de QualysGuard Policy Compliance

Request Tracker pour les Nuls. Yves Agostini - YVESAGO

Squale Le portail qualimétrie open-source

Initiation à JAVA et à la programmation objet.

Transcription:

Cours LPSIL IDSE 2013

LPSIL IDSE Pierrick Perret 2

Gestion du code source Gestion du build LPSIL IDSE Pierrick Perret 3

Problèmes rencontrés? LPSIL IDSE Pierrick Perret 4

Collaboration Pour permettre aux membres d une équipe de travailler ensemble sur un projet commun LPSIL IDSE Pierrick Perret 5

Versioning Pour être capable de gérer les différentes versions du logiciel LPSIL IDSE Pierrick Perret 6

Rollback Pour être capable de revenir à une version précédente à tout moment LPSIL IDSE Pierrick Perret 7

Utilisation d un dépôt (repository) Centralisé / Distribué Partagé Qui permet un travail collaboratif sur le code (gestion des modifications concurrentes) l accès à chacun à la dernière version du code de connaître et tracer les changements effectués LPSIL IDSE Pierrick Perret 8

Lors d un projet de développement logiciel, plusieurs intervenants contribuent sur la même base de code. Développeurs, mais aussi, ingénieurs qualité, ingénieurs packaging, ingénieurs tests, rédacteurs de documentation techniques, gestionnaire de releases, architectes, etc Le respect des bonnes pratiques de gestion du code source est incontournable LPSIL IDSE Pierrick Perret 9

Etre capable de gérer les différentes versions du logiciel Développement en cours (trunk ; version n+1) Maintenance des versions déjà livrées Utilisation des notions de tags et de branches LPSIL IDSE Pierrick Perret 10

Trunk (le tronc) LPSIL IDSE Pierrick Perret 11

Tags (les versions buildées, livrées, archivées doivent être «tagguées» = «labélisées») LPSIL IDSE Pierrick Perret 12

Nécessité de maintenir les versions livrées (1.0.x) Besoin de développer une nouvelle version en parallèle (la 2.0) LPSIL IDSE Pierrick Perret 13

Etre capable de revenir à une version précédente à tout moment Garder tout l'historique des changements (traçabilité) Connaitre l auteur, la date, la nature et le contenu de chaque changement Connaitre les raisons du changement (bug fix?) Identifier chaque changement par un numéro de révision Etre capable de revenir à l état du logiciel à n importe quel niveau de révision LPSIL IDSE Pierrick Perret 14

LPSIL IDSE Pierrick Perret 15

Checkout Récupérer le code source en local sur sa machine Local changes Modifier le code en local Update Récupérer les modifications des autres Commit Ajouter ses modifications dans le repository LPSIL IDSE Pierrick Perret 16

LPSIL IDSE Pierrick Perret 17

Modifications concurrentes? Les contributeurs peuvent travailler à plusieurs en même temps sur un même fichier LPSIL IDSE Pierrick Perret 18

Qu est-ce qu un conflit? Les contributeurs veulent apporter une modification sur le même fichier voire sur la même partie d un même fichier LPSIL IDSE Pierrick Perret 19

Approche pessimiste Empêcher toute modification sur un fichier en cours d édition Verrou Conflits impossibles, car gestion concurrente impossible Trop rigide LPSIL IDSE Pierrick Perret 20

Approche optimiste! Utiliser une synchronisation pour gérer les conflits Beaucoup plus souple, considère que les conflits ne sont pas fréquents et qu ils seront gérés au cas par cas, par le développeur lui-même Utilisation des fonctionnalités des systèmes de Gestion de Code Source pour résoudre le conflit (update / fusion / merge) LPSIL IDSE Pierrick Perret 21

John et Tim font chacun un checkout du dépôt et obtiennent le fichier README à la révision #1 Ils l éditent chacun de leur coté John, une fois ses changements terminés, fait un commit de ses changements Il soumet une mise à jour de son fichier sur le dépôt Le système créé la révision #2 du fichier Plus tard Tim va, à son tour, vouloir commiter ses changements Il y a conflit! Le système renvoie une erreur et n autorise pas ce commit LPSIL IDSE Pierrick Perret 22

La copie locale de Tim, au moment du commit, n est pas à jour: Rev#1 au lieu de Rev#2 dans le repository. Si le système laisse Tim commiter ses changements, cela écraserait purement et simplement les changements réalisés par son collègue John. LPSIL IDSE Pierrick Perret 23

Si les modifications ne se recoupent pas Merge automatique (fusion) update: on récupère la dernière version du repository, le SCM fusionera automatiquement les changements LPSIL IDSE Pierrick Perret 24

Ex: README Rev#1 Voici le contenu du fichier initial Ex: Changement commité par John Je propose d ajouter du texte avant Voici le contenu du fichier initial LPSIL IDSE Pierrick Perret 25

Changement proposé par Tim Voici le contenu du fichier initial Je pense qu il faut développer la partie en dessous Proposition de merge + création de la Rev#3 Je propose d ajouter du texte avant Voici le contenu du fichier initial Je pense qu il faut développer la partie en dessous LPSIL IDSE Pierrick Perret 26

Et si les modifications se recoupent? Lorsque des modifications portent sur la même partie du code, le système ne sait pas résoudre le conflit tout seul Le système indiquera un conflit et proposera plusieurs possibilités pour résoudre le conflit (choix de la version à garder) Le développeur doit prendre une décision Merge manuel (fusion) LPSIL IDSE Pierrick Perret 27

Release branch Feature branch Team branch Voir : http://svnbook.redbean.com/en/1.7/svn.branchmerge.commonpa tterns.html LPSIL IDSE Pierrick Perret 28

Gestion centralisée CVS, SVN, Clearcase, Perforce, etc Gestion décentralisée GIT, Mercurial, BitKeeper, RTC, etc LPSIL IDSE Pierrick Perret 29

CVS SVN Historique SVN aka Subversion est le successeur de CVS SVN est l un des gestionnaires de code source les plus répandus actuellement SVN se base sur un repository central GIT http://git-scm.com/documentation En plein essor, de plus en plus répandu Approche distribuée de la gestion du code source LPSIL IDSE Pierrick Perret 30

Documentation en ligne: http://subversion.apache.org/docs/ http://svnbook.red-bean.com/ SVN est un système centralisé (dépôt) Dépôt = server qui stocke tous les fichiers et toutes leurs modifications Chaque développeur se connecte en tant que «client» de ce «server» LPSIL IDSE Pierrick Perret 31

L accès à SVN se fait par HTTP généralement par l intermédiaire d un client SVN Quelques clients ligne de commande (il sait tout faire!) TortoiseSVN qui s intègre dans l explorateur de Windows Subversive pour l intégration dans Eclipse D autres exemples? http://fr.wikipedia.org/wiki/comparaison_des_clients_pour _Subversion LPSIL IDSE Pierrick Perret 32

L organisation du code source dans SVN trunk modulea moduleb modulec branches v1updates modulea moduleb modulec v2updates tags v1.0 modulea moduleb modulec v2.0 LPSIL IDSE Pierrick Perret 33

Les commandes courantes svn checkout <URL> <dossier> svn update svn commit <dossier> m «commentaire» Passer des options (voir le manuel SVN) Ex: -m pour un message --username pour s authentifier etc LPSIL IDSE Pierrick Perret 34

Les commandes courantes svn status svn log svn diff svn merge LPSIL IDSE Pierrick Perret 35

Architecture distribuée Avec server central Commit en deux temps, concept de repository local (clone) Commit Push Reconnu pour ses performances Gestion des branches, repositories partageables LPSIL IDSE Pierrick Perret 36

Les commandes courantes git init : créer un repository git clone : cloner un projet existant pour travailler dessus git pull : recuperer les changements des autres git log : voir l historique des changements git status : voir l etat des changements dans la copie locale git diff : differences entre 2 versions git add : ajouter des fichiers dans le repo local git commit : ajouter le changement en local git push : partager ses changements LPSIL IDSE Pierrick Perret 37

Gestion du code source Gestion du build LPSIL IDSE Pierrick Perret 38

Qu est-ce que le «build»? Compilation du code source Exécution de tests Définition du packaging Création de livrables, consommables Gestion des dépendances Production de rapports (errors, tests results, coverage ) LPSIL IDSE Pierrick Perret 39

Qu est-ce que le «build»? Intimement lié à la gestion du développement et du code source Définit les étapes nécessaires pour construire le produit Intégration des modules LPSIL IDSE Pierrick Perret 40

Qu est-ce que le «build»? Différents niveaux de granularité Le build continu -> snapshot des modules en cours de développement Le build de nuit -> snapshot du produit complet Le build de release (ou de milestone) -> build d itération -> build de version alpha ou beta -> build de release candidate ou finale = Version «tagguée» dans le SCM LPSIL IDSE Pierrick Perret 41

Quel est le but? Valider le code source notamment par l exécution de la compilation et de tests unitaires Être capable de fournir un «installer» ou plus généralement un état courant du développement du produit, à tout moment «Snapshot» Un build doit être reproductible à tout moment Etre toujours capable de reconstruire un produit livré à un client Permettre de détecter très rapidement les «régressions» qui peuvent être introduites pour les corriger le plus rapidement possible -> Agilité LPSIL IDSE Pierrick Perret 42

Quel est le lien avec la gestion de code source? Le build est géré par un ensemble de scripts Il est géré comme le code source (il en fait partie!) Selon la technologie, il va même définir la structure du code! Il définit la version Il est associé à la branche et géré dans la branche Il évolue avec le produit Ex : Sur le trunk = version 2.0-SNAPSHOT Sur une branche v10updates = version 1.0-SNAPHOT Permet de construire les différentes versions en parallèle! LPSIL IDSE Pierrick Perret 43

Quelques exemples Make Ant, Maven, Gradle PDEbuild, Tycho MSBuild, NAnt LPSIL IDSE Pierrick Perret 44

GNU Make http://www.gnu.org/software/make/ Commande unix Permettant d automatiser la compilation de code Ex make install make doc make clean make all LPSIL IDSE Pierrick Perret 45

Apache Ant (1) http://ant.apache.org/ Remplaçant de make Permettant d automatiser la compilation et d autres taches de packaging Compilation Génération de javadoc Manipulation de fichiers (copy, move, etc ) Création d archives JAR LPSIL IDSE Pierrick Perret 46

Apache Ant (2) project targets compilation installation execution tasks Correspondent a des commandes usuelles javac jar copy Décrits dans un fichier build.xml LPSIL IDSE Pierrick Perret 47

Apache Ant (3) (+) Encore très utilisé, puissant (+) Pratique et flexible pour beaucoup de taches (-) Difficile à maintenir (-) Debugging difficile (-) Pas de gestion des dépendances LPSIL IDSE Pierrick Perret 48

Maven (1) http://maven.apache.org/ Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. LPSIL IDSE Pierrick Perret 49

Maven (2) Gestion des dépendances Maven Central Repository Maven Internal Repository (Nexus, Artifactory ) Maven Local Repository (sur la machine du développeur) Dépendances transitives J ai besoin du module M, qui dépend du module N, qui luimême dépend de Je n appelle que le module M! Maven se charge du reste LPSIL IDSE Pierrick Perret 50

Maven (3) Gestion des dépendances Notion d artifact Maven Identifié par des coordonnées maven groupid artifactid version Ex JUnit <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.10</version> </dependency> LPSIL IDSE Pierrick Perret 51

Maven (4) Gestion du code source Maven définit un Layout pour l organisation du code src/main/java src/main/test pom.xml (Maven project object model) Un pom = un artifact maven Le rootpom definit la configuration générale du projet Un pom.xml a toujours un pom parent et hérite de ses propriétés (récursivité) LPSIL IDSE Pierrick Perret 52

Maven (5) Gestion du build par phase Les plus utilisées validate : vérifie les pre-requis d un projet maven compile : compilation du code source test : lancement des tests unitaires (cf. cours sur les tests à suivre) package : assemble le code compilé en un livrable install : partage le livrable dans le repository maven local deploy : publie le livrable pour d autres projets dans le repo distant LPSIL IDSE Pierrick Perret 53

Maven (6) Liens utiles Apache Maven : http://maven.apache.org/ Maven: The Complete Reference : http://www.sonatype.com/books/mvnref-book/reference/ Traduction française: http://maven-guide-fr.erwanalliaume.com/ (A lire!) LPSIL IDSE Pierrick Perret 54

Utiliser un gestionnaire de source code Expliquer les changements (commentaires de commits) Lier les changements a des tickets Commiter le code source (pas les binaires!) Commiter le code régulièrement pour éviter les conflits Mettre en place une politique de gestion des tags/branches, versioner le code Reporter les fixes sur les branches actives Automatiser le build et les tests pour le rendre reproductible, éviter les régressions et augmenter le niveau de confiance Tous ces concepts seront repris dans le cours sur l intégration continue (à suivre!) LPSIL IDSE Pierrick Perret

LPSIL IDSE Pierrick Perret