Ubis SP4 - Lot4.1 Spécification de l`intégration
Transcription
Ubis SP4 - Lot4.1 Spécification de l`intégration
Projet ANR-Verso 2008 UBIS «User centric»: uBiquité et Intégration de Services SP4 – Intégration et métrologie Lot 4.1 – Spécification de l'intégration Auteurs : Alban Richard Olivier Bourdon Participants : Version : V1.2 Date : 08/02/01 1 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration Historique du Document Version Date Modifications V1.0 20/01/11 Version initiale V1.1 01/02/11 1ère version livrée V1.2 08/02/11 2ème version livrée Abstract Dans ce document nous allons décrire l'ensemble du processus d'intégration tant d'un point de vue architectural que fonctionnel. En effet, dans un projet comme UBIS comprenant de multiples acteurs et faisant appel à de nombreuses briques technologiques, il est important de considérer l'intégration dans son ensemble et non comme s'est souvent le cas uniquement comme l'assemblage de « bouts de code » devenant la plateforme finale. Nous allons tout d'abord lister l'ensemble des choix technologiques mis en oeuvre dans le cadre de la plateforme d'un point de vue logiciel, expliquer brièvement leur fonction et les alternatives potentielles, justifier leur choix et enfin décrire les processus d'intégration Ce document traitera succinctement du cas des terminaux mobiles et des technologies qui leur sont associées en reprenant certaines parties du document réalisé par la société Snapp « Etude_Plateformes_Userware_Ubis.doc » concernant le choix de la plateforme de développement pour la partie terminaux mobiles . Nous aborderons de même rapidement les parties infrastructures matérielles (machines, routeurs virtuels [Virtuor], points d'accès WIFI, ...) 2 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration Table des matières 1 CHOIX TECHNOLOGIQUES ......................................................................................................................................... 5 1.1 Composants de base .................................................................................................................................................. 5 1.1.1 Coeur de communication ..................................................................................................................................... 5 1.1.2 Conteneur Web « Standard » ............................................................................................................................... 6 1.1.3 Conteneur Web SIP .............................................................................................................................................. 6 1.2 Technologies Web....................................................................................................................................................... 7 1.2.1 Files de messages ................................................................................................................................................. 7 1.2.2 EJB (Enterprise Java Beans) ................................................................................................................................ 7 1.2.3 Sécurité................................................................................................................................................................. 7 1.3 Plateforme mobile ....................................................................................................................................................... 7 1.4 Plateforme matérielle .................................................................................................................................................. 9 1.5 Vue d'ensemble......................................................................................................................................................... 10 2 SERVEUR D'INTEGRATION ....................................................................................................................................... 11 2.1 Service Web HTTP.................................................................................................................................................... 11 2.2 Service d'annuaire OpenLDAP.................................................................................................................................. 11 2.3 Service VPN .............................................................................................................................................................. 12 2.4 Service Web Conteneur ............................................................................................................................................ 12 2.5 Service de gestion de sources Subversion (SVN) ..................................................................................................... 12 2.6 Service de mise à jour automatique .......................................................................................................................... 13 2.7 Schéma organisationnel du serveur d'intégration...................................................................................................... 13 3 PLATEFORME D'INTEGRATION ............................................................................................................................... 14 3.1 Mise en œuvre via machine virtuelle Ubuntu ............................................................................................................ 14 3.1.1 3.1.2 3.1.3 3.1.4 Utilisation et connexion utilisateur UBIS........................................................................................................... 14 Enregistrement utilisateur sur le serveur d'intégration ....................................................................................... 14 Connection au VPN............................................................................................................................................ 16 Méthode innovante de mise à jour automatique ................................................................................................. 16 4 PROCESSUS D'INTEGRATION.................................................................................................................................. 17 5 ANNEXES .................................................................................................................................................................... 17 5.1 Serveur SVN : principes de fonctionnement du gestionnaire de sources .................................................................. 17 3 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration Index des illustrations Illustration 1: Logo OpenIMS Core ...................................................................................................................................... 5 Illustration 2: Logo GlassFish .............................................................................................................................................. 6 Illustration 3: Logo SailFin ................................................................................................................................................... 6 Illustration 4: Logos OpenSSO & OpenAM ......................................................................................................................... 7 Illustration 5: Versions de Maemo/Meego ........................................................................................................................... 8 Illustration 6: APIs Maemo/Meego ...................................................................................................................................... 8 Illustration 7: Plateforme Matérielle ..................................................................................................................................... 9 Illustration 8: Architecture Globale de la Plateforme ......................................................................................................... 10 Illustration 9: Logo Apache ................................................................................................................................................ 11 Illustration 10: Logo OpenLDAP ........................................................................................................................................ 11 Illustration 11: Logo ZK ..................................................................................................................................................... 12 Illustration 12: Logo OpenVPN .......................................................................................................................................... 12 Illustration 13: Logo Subversion ........................................................................................................................................ 12 Illustration 14: Schéma Fonctionnel du Serveur d'Intégration ........................................................................................... 13 Illustration 15: Ecran d'invite utilisateur Ubuntu ................................................................................................................. 14 Illustration 16: Bureau de l'utilisateur UBIS ....................................................................................................................... 15 Illustration 17: Formulaire d'inscription .............................................................................................................................. 15 Illustration 18: Serveur Subversion ................................................................................................................................... 17 Illustration 19: Exemples de modifications gérées avec SVN............................................................................................ 18 Illustration 20: SmartSVN: importation d'un repository SVN.............................................................................................. 18 Illustration 21: SmartSVN: commandes principales .......................................................................................................... 19 4 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 1 Choix technologiques Dans cette partie, nous allons lister l'ensemble des choix technologiques faits dans le cadre du projet UBIS. Ceci est d'autant plus important que, dans le monde de l'Open Source, les solutions possibles pour une problématique donnée sont nombreuses. Il est donc parfois difficile de distinguer celle qui correspond le mieux aux besoins du projet en cours tant d'un point de vue du nombre de fonctionnalités offertes que des possibilités d'extensions et de modifications, de la robustesse du code et du support que l'on peut obtenir en cas de problème. 1.1 Composants de base Ils constituent la base sur laquelle la plateforme sera bâtie. 1.1.1 Coeur de communication Il existe de nombreuses implémentations de coeur de communication basé sur le protocole SIP. Celle qui a été retenue ici est Open IMS Core disponible à l'adresse http://www.openimscore.org/ Illustration 1: Logo OpenIMS Core Cette technologie est livrée soit sous forme de code source soit sous forme de machine virtuelle de démonstration. Sa facilité de mise en oeuvre et d'utilisation ainsi que les nombreuses références de mise en application en ont fait le choix indiscutable. Nous avons retenu la version code source pour des raison évidentes de portabilité et extensibilité. Cependant afin d'uniformiser sa compilation et son utilisation ainsi que sa configuration, des scripts automatisant les processus de construction et de lancement des différents processus ont été ajoutés afin de permettre à toute personne de mettre en oeuvre cette brique de base de la plateforme sans demander aucune expertise préalable. 5 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 1.1.2 Conteneur Web « Standard » Le terme « standard » est à prendre ici en opposition au paragraphe 1.1.3 . Afin de pouvoir déployer les technologies décrites ci-après au paragraphe 1.2 , il est nécessaire de posséder un conteneur d'applications Web basé sur la technologie J2EE c-a-d Java2 Enterprise Edition. Ici encore, plusieurs choix s'offrent à nous parmi: GlassFish (Open Source Sun/Oracle), Tomcat (OpenSource Fondation Apache), JBoss (OpenSource RedHat), JOnAS (OpenSource fondation Object Web) sans parler des offres commerciales (IBM WebSphere, BEA WebLogic, Oracle Application Server, …). Afin de minimiser les coûts d'apprentissage et de factoriser le code au maximum avec les parties SIP décrites ci-après, le choix qui s'impose de lui même est GlassFish: http://glassfish.java.net/ Illustration 2: Logo GlassFish Encore une fois, que ce soit en s'appuyant sur les critères comparatifs entre la version 2 et la version 3 disponibles à la page http://glassfish.java.net/public/comparing_v2_and_v3.html mais surtout en considérant le fait que dans le cas d'un container commun avec la partie SIP la version 2 est celle qui est retenue. Ici aussi, des scripts de configuration et de lancement automatiques seront fournis afin que tout un chacun soit capable d'utiliser ce conteneur de la façon la plus simple possible et d'éviter par ailleurs les conflits de ports avec certains services administratifs fournis par Open IMS Core. 1.1.3 Conteneur Web SIP Le projet SailFin (http://sailfin.java.net/) est un conteneur web basé sur GlassFish 2.x (cf. paragraphe précédent), fournissant en plus une implémentation de stack SIP et permettant l'exécution d'applications SIP appelées SIPlets ou SIP servlets. Illustration 3: Logo SailFin Dans le cadre du projet UBIS, le protocole SIP doit être étendu afin de supporter des informations additionnelles (SIP+). C'est pourquoi, le fait que SailFin soit un composant OpenSource pour lequel nous disposons non seulement du code source mais aussi des procédures de fabrication a été un facteur déterminant dans le choix de cette technologie. Là encore, des scripts de compilation complètement automatiques seront fournis et suivront les mêmes principes que ceux cités au 1.1.2 . 6 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 1.2 Technologies Web Nous allons ici faire la liste des technologies web qui seront utilisées dans les conteneurs Web et SIP GlassFish et SailFin cités ci-dessus. 1.2.1 Files de messages Afin que les différents composants puissent communiquer et échanger des messages selon les prérequis du projet UBIS (priorités, QOS, …) il est important de s'appuyer sur un mécanisme à la fois fiable et standardisé. Dans le monde Java, Sun Microsystems a proposé une spécification appelée Java Message Service (JMS) http://fr.wikipedia.org/wiki/Java_Message_Service http://java.sun.com/products/jms qui possède ce que l'on appelle plusieurs « implémentations de référence ». En effet, il est très fréquent dans le monde OpenSource en général et dans le monde Java en particulier d'avoir besoin des fonctionnalités d'une librairie (Application Programming Interface aka. API) « standardisée » pour laquelle il est possible de trouver plusieurs implémentations, chacune apportant son lot de modifications et/ou améliorations. Dans le cas de JMS, on peut trouver l'implémentation de référence fournie par Sun Microsystems lui même http://java.sun.com/products/jms ainsi que celle fournie par le conteneur GlassFish lui même, Open Message Queue http://mq.java.net/ mais aussi Active MQ http://activemq.apache.org/ Open JMS http://openjms.sourceforge.net et plus récemment Apache QPID http://qpid.apache.org/. Cependant, désirant bénéficier d'un maximum de stabilité et fiabilité sans sacrifier la possibilité de modifier le code source si nécessaire, nous avons choisi l'implémentation de référence fournie par le conteneur GlassFish: Open Message Queue. 1.2.2 EJB (Enterprise Java Beans) Dans le cadre d'applications Java, les Enterprise Java Beans ou EJB http://fr.wikipedia.org/wiki/Enterprise_JavaBeans, constituent une des technologies de base très souvent employée. Ces composants logiciels dynamiques et distribués permettent facilement de représenter les données applicatives ainsi que les sessions des clients distants, ont la capacité d'être liés à un état (state-full) ou pas (stateless) , de communiquer entre eux en utilisant différentes techniques et ceci qu'ils soient localisés dans un même conteneur ou pas. 1.2.3 Sécurité En ce qui concerne la partie sécurité, le projet UBIS a besoin de technologies dites de Single Sign On (authentification unique). Au démarrage du projet, Sun Microsystems disposait d'une offre OpenSource appelée OpenSSO qui a été retirée de l'offre catalogue lors du rachat de Sun par Oracle. Une nouvelle société fondée par des anciens employés de Sun qui travaillaient sur cette technologie a été créée, ForgeRock, et fournit maintenant l'équivalent disponible sous le nom de OpenAM http://www.forgerock.com/openam.html. Illustration 4: Logos OpenSSO & OpenAM Dans ce cadre, nous aurons besoin non seulement de la partie serveur mais aussi des codes des agents de connexion car celui-ci devra être adapté pour les besoins des services UBIS. 1.3 Plateforme mobile Tout au long du déroulement du projet UBIS, une des interrogations principales a été le choix de la plateforme mobile de « référence ». En effet dans le monde mobile et comme expliqué par Nicolas Delabarre dans son document « Etude_Plateformes_Userware_Ubis.doc » écrit en septembre 2009, les premiers choix disponibles étaient: Java Micro Edition (JavaME par Sun/Oracle), Android (Google), iPhone OS (Apple), Symbian (Nokia) et Windows Mobile (Microsoft). Chacune disposait de 7 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration ses points forts, de ses faiblesses et de son lot de spécificités et le choix n'était pas aisé. Considérant de plus que dans le cadre du projet UBIS, le UserWare possédait aussi une partie ordinateur de bureau/desktop, aucune des solutions pré-citées ne permettait de factoriser les développement entre la partie mobile et la partie desktop. Suite à la montée en puissance d'une solution appelée Maemo/Meego, basée sur un socle Linux Debian et promue par Nokia dans le cadre des développements pour son téléphone N900, une nouvelle évaluation technique à été entreprise par la société Snapp. Téléphones Version Maemo Nokia 770 1.x/2.x Année Nom de code 2005/2006 Gregale Nokia N800 3.x 2007 Bora Nokia N810 4.x 2008 Diablo/Chinook Nokia N900 5.0 2009 Fremantle 6.0 2010 Harmattan Illustration 5: Versions de Maemo/Meego En fait Meego dont la version 1.1 est sortie en Octobre 2010 grâce à l'effort commun de Nokia (côté Maemo) et Intel (pour Mobile Linux aka Moblin) se trouve être un « merge » entre Maemo 6 et Moblin 2. Un des principaux avantage de cette solution consiste dans la liste des librairies programmatiques (APIs) relativement standard qui sont disponibles à la fois du côté plateforme mobile mais aussi coté desktop Linux mais aussi dans l'environnement de développement lui même et basé sur la technologie Qt de TrollTech. C'est pourquoi l'écriture des parties UserWare devrait être largement simplifiée par l'utilisation des APIs communes aux mondes mobiles et desktop. Illustration 6: APIs Maemo/Meego 8 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 1.4 Plateforme matérielle Très brièvement voici le schéma de l'infrastructure mise en place au niveau matériel entre le site de Telecom ParisTech et SFR. Cette image fournie par Arnaud Le Maguer est bien évidemment sujette à modifications en fonction des besoins notamment ceux du démonstrateur. Illustration 7: Plateforme Matérielle Cette maquette matérielle peut être résumée comme suit : Liaison VPN IPsec point à point (2xCisco 1841) pour interconnexion Labsfr et Telecom ParisTech. Adressage de sous réseaux transitant dans le tunnel: ◦ Subnet dans le pool 192.168.128.0 /22 côté Telecom ParisTech ◦ Subnet dans le pool 192.168.132.0 /22 coté Labsfr Equipements Virtuor connectés coté Labsfr: 3 PhysicalNodes + 1 serveur console administration. Services proposés par le Labsfr: ◦ Transit Internet dédié ◦ Accès mobile 2G/3G avec APN dédiées diffusées sur le réseau de production ◦ Hébergement de serveurs virtuels (VMware) ◦ Hébergement de serveurs physiques ◦ Plateforme IPv4 et IPv6 (bout en bout) Administration: ◦ Console VMware: Administration « physique » des machines virtuelles (cœur IMS, serveur d’intégration...) dans la Zone DMZ-Noc. Accès par VPN (client Cisco) ◦ Serveur d’intégration (GlassFish, SVN, OpenLDAP…) dans la Zone DMZ. Accès http et VPN (OpenVPN) cf. page 11 9 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 1.5 Vue d'ensemble Afin de synthétiser l'ensemble des composants cités ci-dessus, voici un schéma englobant ces différentes technologies et les positionnant dans leur contextes respectifs. Une vue plus détaillé de la partie SaiFin peut être consultée sur http://download.oracle.com/docs/cd/E17645_01/doc.50/e17655/tpd_overview.htm#sthref5 Illustration 8: Architecture Globale de la Plateforme 10 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 2 Serveur d'intégration Afin de faciliter le travail de toutes les équipes participant à UBIS un serveur d'intégration à été mis à disposition dans l'infrastructure SFR sous forme de machine virtuelle exécutant un système d'exploitation Fedora Core 12 32 bits et disponible sur l'adresse IP publique ubis.labsfr.com. Sur ce système, les services qui tournent sont les suivants: service Web HTTP (http://httpd.apache.org/) service d'annuaire OpenLDAP (http://www.openldap.org/) service VPN (http://openvpn.net/) service Web Conteneur (http://glassfish.java.net/) service de gestion de sources Subversion (SVN) (http://subversion.tigris.org/ et http://svnbook.red-bean.com/) service de mise à jour automatique (fonctionnalité propriétaire et innovante) Dans les paragraphes qui suivent, chacun de ces services va être décrit plus en détail. 2.1 Service Web HTTP Illustration 9: Logo Apache Il est implémenté par le serveur httpd Apache natif dans la distribution Fedora Core et permet l'affichage des pages web contenant les informations d'utilisation et historiques des modifications des différents composants d'intégration (Machine virtuelle, programmes, …). On peut accéder aux informations qu'il contient en utilisant n'importe quel navigateur Web (Internet Explorer, Firefox, Chrome, Opera, Safari, …) et en utilisant l'URL http://ubis.labsfr.com. Dans certains cas, lors des processus automatiques de construction qui vont être évoqués dans un chapitre suivant, le service httpd permet aussi de récupérer des logiciels, scripts et/ou bouts de code qui ne peuvent être récupérés autrement de façon aisée (par exemple les versions de Java). Certaines zones de données de ce service peuvent éventuellement être sécurisés en utilisant le service d'annuaire décrit au paragraphe suivant. 2.2 Service d'annuaire OpenLDAP Illustration 10: Logo OpenLDAP Ce service est représenté sous la forme du processus démon slapd lui aussi natif dans la distribution Fedora Core. Il permet d’enregistrer des utilisateurs de façon centralisée et ainsi de fédérer les autorisations inhérentes à certains services de façon uniforme et ainsi éviter de nombreux duplicatas dans des fichiers de configuration épars. C'est ainsi qu'il est utilisé par les services de connexion au serveur (ssh), d'autorisation d'accès à certaines zones du serveur Web ci-dessus mais aussi et principalement d'identifier les clients du Virtual Private Network (VPN) décrit au 2.3 ainsi qu'au service de gestion de source SVN 2.5 . 11 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration Illustration 11: Logo ZK Les données contenues par ce service d'annuaire sont entrées via un formulaire web utilisant de l' AJAX basé sur la technologie ZK (http://www.zkoss.org/) et implémentée par le conteneur Web 2.4 . 2.3 Service VPN Illustration 12: Logo OpenVPN Afin de ne pas laisser de potentiels pirates accéder aux services privés du serveur d'intégration (comme le gestionnaire de sources) puisque celui-ci est directement accessible sur Internet, la mise en place d'un serveur VPN s'impose et permet de restreindre l'utilisation de ces service sensibles aux seuls utilisateurs connectés via ce VPN. Pour cela nous utilisons le serveur OpenVPN de la distribution Fedora Core et qui sera de plus configuré de telle sorte qu'il utilisera les données utilisateurs contenues dans le service d'annuaire. Ce logiciel possédant par ailleurs des mécanismes simples de détection de connections entrantes, ceux-ci vont être mis à profit pour permettre la maintenance automatique de la machine virtuelle de développement décrite au 3 ainsi qu'au 2.6 . 2.4 Service Web Conteneur L'ajout du logiciel GlassFish dans sa version 2.x permet non seulement l'utilisation de ZK (cf. 2.2 ) mais aussi le traitement des formulaires d'enregistrement des utilisateurs via l'extension Php Java Bridge (http://php-java-bridge.sourceforge.net/pjb/index.php). Cette extension permet à un conteneur ne pouvant à priori pas exécuter du code PHP (ou autre langage de script) de le traiter de la même façon que tout serveur style Apache et son module mod_php. Ce conteneur sera aussi utilisé dans le cadre de l'intégration continue en lui ajoutant le module Hudson (http://hudson-ci.org/). Ce dernier va permettre au serveur d'effectuer, par exemple, des tâches journalières de génération et aussi de test du code source et ainsi de le mettre à disposition de l'ensemble des membres du projet UBIS. 2.5 Service de gestion de sources Subversion (SVN) Illustration 13: Logo Subversion Dans le cadre d'un projet informatique quel qu'il soit, la gestion du code source est un élément important du processus de développement et d'intégration. Dans le domaine OpenSource de nombreuses solutions existent: CVS, SVN, GIT, Mercurial, Bazaar, … certaines beaucoup plus anciennes que d'autres (CVS) et certaines relativement compliquées à mettre en oeuvre mais aussi à utiliser. C'est pourquoi le choix s'est naturellement porté sur Subversion/SVN qui est ici intégré au serveur via le module Apache livré dans la distribution Fedora Core: mod_dav-svn. Comme mentionné ci-dessus, il est configuré pour fonctionner avec l'authentification LDAP fournie par 2.2 . 12 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration En plus de la version ligne de commande de manipulation des sources dans Subversion, des clients graphiques permettant une utilisation plus aisée sont disponibles sur toutes les plateformes classiques (MacOSX, Windows, Linux, …) et notamment SmartSVN qui est écrit en Java (cf http://www.syntevo.com/smartsvn/index.html). D'autre part, cet outil de gestion de sources permet aussi l'émission de notification par email lors de toute manipulation des sources et indiquant ainsi l'auteur et le contenu des modifications. Nous reparlerons de cet outil au chapitre 3 . 2.6 Service de mise à jour automatique Comme indiqué au 2.3 , il est possible d'utiliser des « déclencheurs » lorsqu'un client se connecte avec succès au VPN. Grâce à cette mécanique, le serveur d'intégration sera capable de mettre à jour les machines virtuelles distantes afin d'uniformiser toutes les plateformes de développement et de garantir ainsi le bon fonctionnement des processus de compilation et d'exécution des différents composants. Ce service sera plus amplement détaillé au chapitre 3 . 2.7 Schéma organisationnel du serveur d'intégration Afin de clarifier les interactions entre les différents composants décrits ci-dessus voici un petit schéma permettant d'avoir une vue plus synthétique de l'ensemble des éléments et de leur interactions. Illustration 14: Schéma Fonctionnel du Serveur d'Intégration 13 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 3 Plateforme d'intégration Afin d'uniformiser les plateformes d'intégration et de développement, il a été décidé de fournir une plateforme dite « de référence » sous la forme d'une machine virtuelle. Au format VMware, mais aussi utilisable via VirtualBox, les deux formats de virtualisation offrant des outils gratuits pour lancer ces environnements virtuels, cette machine est basée sur un OS de référence « stable » (Ubuntu 10.04) ainsi que l'ensemble des outils de développement nécessaires (Netbeans IDE, client SVN SmartSVN, client OpenVPN) et ceci dans une forme pré-configurée mais aussi entièrement maintenue de façon automatique grâce aux fonctionnalités décrites au 2.3 et 2.6 . 3.1 Mise en œuvre via machine virtuelle Ubuntu 3.1.1 Utilisation et connexion utilisateur UBIS Une fois le(s) binaire(s) récupéré(s), décompressé(s) et lancé(s) dans VMplayer ou VirtualBox selon les instructions disponibles à http://ubis.labsfr.com/, on découvre l'écran d'invite d'un Linux Ubuntu standard et qui comporte 2 utilisateurs : Illustration 15: Ecran d'invite utilisateur Ubuntu. L'un est entièrement réservé pour les tâches d'administration en possède les droits de super-utilisateur/root. L'autre est celui que doivent utiliser toutes les personnes étant amenées à développer dans le cadre d'UBIS. Nous avons récupéré ci-dessous des informations déjà présentées par Akram Ben Hassen dans le document « La machine virtuelle de développement ». Illustration 15: Ecran d'invite utilisateur Ubuntu 3.1.2 Enregistrement utilisateur sur le serveur d'intégration Une fois le mot de passe entré, l'utilisateur arrive sur un bureau contenant par défaut les icônes donnant accès aux principaux outils de développement et d'utilisation de la plateforme: Illustration 16: Bureau de l'utilisateur UBIS. Tout d'abord en haut à gauche se situe l'outil permettant la création d'un nouvel utilisateur/développeur UBIS dans l'annuaire LDAP et pour ce faire se connecte au serveur d'intégration via 2.4 . En double-cliquant sur cette icône on ouvre un navigateur web qui 14 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration affiche alors le formulaire d'enregistrement des nouveaux utilisateurs: Illustration 17: Formulaire d'inscription. Illustration 16: Bureau de l'utilisateur UBIS Illustration 17: Formulaire d'inscription 15 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 3.1.3 Connection au VPN La prise en compte du nouvel utilisateur étant immédiate et en utilisant la seconde icône en haut à gauche du bureau Illustration 16: Bureau de l'utilisateur UBIS, on peut alors se connecter directement au serveur d'intégration via le VPN. Durant cette étape, l'identifiant et le mot de passe seront demandé et vérifiés dans la fenêtre de connexion au VPN afin de garantir la sécurité des données. Une fois la connexion au VPN effectuée, l'utilisateur peut alors récupérer l'arbre de sources SVN en utilisant l'URI http://vpn-server:9090/SVN/UBIS soit via la ligne de commande comme expliqué au 5.1 soit en utilisant la première icône en haut à droite du desktop pour lancer l'outil graphique SmartSVN. Pour plus d'informations se référer à Illustration 20: SmartSVN: importation d'un repository SVN et Illustration 21: SmartSVN: commandes principales. 3.1.4 Méthode innovante de mise à jour automatique Il est bien évident qu'une machine virtuelle de ce type, une fois déployée chez les différents acteurs participant au développement du projet UBIS, ne peut rester non modifiée, ne serait-ce que pour la mise à jour du système pour des raisons de faille de sécurité par exemple. Alors que nous pourrions nous baser sur des techniques existantes et/ou laisser l'utilisateur de la machine virtuelle faire lui même ces modifications, nous avons choisi d'innover et d'utiliser les propriétés offertes par le VPN lorsque les connexions sont établies. Grâce aux mécanismes disponibles dans OpenVPN, nous avons la possibilité de déclencher des actions côté serveur lors que la connexion d'un client distant est réussie en disposant de plus de l'identifiant unique (champ login dans l'entrée correspondant de l'annuaire LDAP). Ceci nous permet donc de mettre à jour certains fichiers critiques du système en poussant les versions corrigées depuis le serveur vers la VM cliente. Une fois ces modifications apportées avec succès et tant que le VPN reste ouvert, la VM effectue périodiquement des jobs de maintenance basés sur les fichiers poussés précédemment et contrôle via les journaux d'exécution que tout s'est bien déroulé. Si tel n'est pas le cas, alors les travaux qui n'ont pas été couronnés de succès seront rejoués à l'itération suivante. Il est bien sûr à noter que dans le cas d'un autre système VPN (IPSec, Tunnel, …) des fonctionnalités identiques sont soit disponibles de base soit implémentables à moindre coût. 16 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration 4 Processus d'intégration Nous allons distinguer ici deux parties importantes du processus. La première concerne la gestion des sources et la seconde la génération et mise à disposition des composants issus de ces sources. 4.1 Gestion des sources Grâce au serveur Subversion, la grande majorité des fonctionnalités de gestion de source, à savoir gestion des modifications, historiques contenant dates et utilisateur, résolution ou indication des conflits en cas de modifications simultanées sur le même fichier, … sont disponibles de base. D'autre part, une mécanique de notification a aussi été mise en place afin que les membres des différentes équipes soient informés de tout ajout, suppression et modification dans l'arbre de source (avec détail complet de ces modifications) 4.2 Gestion des composants Cette gestion peut être faite à deux endroits que nous allons expliciter maintenant. 4.2.1 Gestion au niveau de l'arbre de source En premier lieu et de façon assez traditionnelle chaque partie de code sera accompagnée de scripts et/ou makefiles/ant files/... permettant de reconstruire cette partie en fonction de la technologie utilisée (script pour les « bundles » comme OpenIMS Core par exemple, Makefiles pour les parties codées en C et Ant files pour les parties Java). Des scripts de plus haut niveau permettront quant à eux d'assembler le tout afin que l'ensemble soit gérable de la façon la plus simple possible. 4.2.2 Gestion au niveau du serveur d'intégration : intégration continue Au fil des années des techniques nouvelles ont émergé dans les processus de développement logiciel en prenant le nom d'intégration continue. Ces solutions constituent une « normalisation » de méthodes automatiques employées depuis bien des années mais productisées à l'extrême incorporant des mécaniques de reporting sophistiquées et très visuelles. Un exemple parmi tant d'autres mais qui à la particularité de s'adapter à tout style de projet, d'être embarcable dans un conteneur web style GlassFish et d'être compatible avec toutes les technologies citées précédemment dans ce document : Hudson http://hudson-ci.org/. Un bon point de départ consiste à lire les informations disponibles sur la page web http://wiki.hudsonci.org/display/HUDSON/Meet+Hudson et les différents liens qui en découlent. Il est cependant à noter que la priorité sera donnée aux développements inhérents à la partie 4.2.1 afin de pouvoir mettre en œuvre le démonstrateur le plus rapidement possible et que la partie intégration continue viendra en sus. 5 Annexes 5.1 Serveur SVN : principes de fonctionnement du gestionnaire de sources Les informations complémentaires ci-après ont été reprises de la la documentation écrite par Akram Ben Hassen dans le document « La machine virtuelle de développement ». 17 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration Illustration 18: Serveur Subversion Subversion (abréviation SVN) est un système de gestion de versions de fichiers qui permet de stocker des informations pour une ou plusieurs ressources informatiques mais aussi de récupérer toutes leurs versions intermédiaires ainsi que les différences entre les versions (définition wikipedia). Il travaille sur une arborescence de fichiers et permet de mutualiser et coordonner les développements et même de résoudre certains conflits en cas de modifications simultanées. Le schéma temporel qui suit montre un cas concret d'utilisation de SVN entre plusieurs utilisateurs travaillant sur le même arbre de sources. Côté client on peut utiliser l'outil en ligne de commande svn pour récupérer une copie (svn checkout), mettre à jour sa copie locale (svn update) ou propager les modifications locales vers le serveur (svn commit). On peut aussi ajouter des fichiers (svn add), les effacer (svn delete), les renommer/changer de place (svn rename) ou encore voir les la liste des modifications apportées localement mais non « commitées » (svn status) ou les modifications disponibles sur le serveur mais non ramenées par svn update (svn status -u). On peut aussi utiliser un client graphique gratuit comme SmartSVN (écrit en Java) pour plus de simplicité. Il est notamment recommandé en cas de conflits après une commande update car son outil graphique de gestion des différences entre la version serveur et la version modifiée localement est vraiment très puissant. 18 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration Illustration 19: Exemples de modifications gérées avec SVN Illustration 20: SmartSVN: importation d'un repository SVN 19 / 20 Projet ANR Verso 2008 - UBIS SP4 – Lot 4.1 – Spécification de l'intégration Illustration 21: SmartSVN: commandes principales 20 / 20