{"id":40,"date":"2007-11-14T16:25:48","date_gmt":"2007-11-14T15:25:48","guid":{"rendered":"http:\/\/loicmathieu.free.fr\/wordpress\/?p=40"},"modified":"2012-03-19T20:26:50","modified_gmt":"2012-03-19T18:26:50","slug":"integration-continue","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/integration-continue\/","title":{"rendered":"Int\u00e9gration Continue avec Cruise Control"},"content":{"rendered":"<p>Derni\u00e8rement, j&#8217;ai essay\u00e9 un serveur d&#8217;int\u00e9gration continue : Cruise Control.\nJe vais donc vous en parler ici.<\/p>\n<p>Tout d&#8217;abord, qu&#8217;est-ce que l&#8217;int\u00e9gration continue:\nL&#8217;int\u00e9gration continue est une technique de d\u00e9veloppement\/management de projet qui implique d&#8217;int\u00e9grer tr\u00e8s fr\u00e9quemment le travail de tout les membres. Ensuite, une compilation automatique doit \u00eatre lanc\u00e9 pour v\u00e9rifier les \u00e9ventuelle erreurs de compilation du projet puis si possible les tests unitaires doivent aussi \u00eatre lanc\u00e9e.<\/p>\n<p>Concr\u00e8tement, l&#8217;int\u00e9gration continue est le fait d&#8217;automatiser des compilations fr\u00e9quentes du code source d&#8217;une \u00e9quipe incluant les derniers changements de tout ses membres. La plupart des outils d&#8217;int\u00e9gration continue sont capable de faire les actions suivantes :<\/p>\n<ul><li> lancement d&#8217;une int\u00e9gration p\u00e9riodique (toutes le heures par exemple)<\/li>\n\n<li>mise \u00e0 jour du code depuis un gestionnaire de code source<\/li>\n\n<li>compilation du code source<\/li>\n\n<li>lancement des tests unitaires<\/li>\n\n<li>envoi de mail automatiques au personnes concern\u00e9 (celui qui a fait l&#8217;erreur recevra le mail d&#8217;erreur)<\/li>\n\n<li>envoi d&#8217;un mail de rapport<\/li>\n\n<li>d\u00e9ploiement sur un serveur de test<\/li>\n\n<li>cr\u00e9ation de statistiques<\/li>\n<\/ul>\n<p>En r\u00e9alit\u00e9, la plupart des serveur d&#8217;int\u00e9gration continue se basant sur ANT ou MAVEN (ou les deux), ils permettent une liste quasi infinie d&#8217;actions possible.<\/p>\n<p>Les b\u00e9n\u00e9fices d&#8217;une int\u00e9gration continue sont ind\u00e9niable, elle permet de v\u00e9rifier petit \u00e0 petit le travail de toute l&#8217;\u00e9quipe, de d\u00e9tecter les erreurs beaucoup plus rapidement et d&#8217;assurer la coh\u00e9rence de l&#8217;application. coupl\u00e9 \u00e0 un lancement des tests, elle permet de voir l&#8217;\u00e9volution de la qualit\u00e9 de l&#8217;application et montre les progr\u00e8s de l&#8217;\u00e9quipe en temps r\u00e9el. Le plus souvent, ces outils sont livr\u00e9 avec des modules de statistique tr\u00e8s int\u00e9ressant.<\/p>\n<p>Bien sure , utiliser un serveur d&#8217;int\u00e9gration continue implique de se donner quelques r\u00e8gles de d\u00e9veloppements sans lesquels l&#8217;int\u00e9r\u00eat d&#8217;une int\u00e9gration continue est amoindrie:<\/p>\n<ul><li>La compilation doit \u00eatre automatis\u00e9 (ANT, MAVEN, &#8230;), aucune intervention humaine doit \u00eatre n\u00e9cessaire pour avoir une compilation r\u00e9ussie<\/li>\n\n<li>Des commit r\u00e9gulier du code source doivent \u00eatre r\u00e9alis\u00e9 par l&#8217;\u00e9quipe<\/li>\n\n<li>Des tests automatiques doivent pouvoir \u00eatre lanc\u00e9 (JUNIT et ANT ou MAVEN par exemple)<\/li>\n\n<li>Un responsable doit recevoir les rapports et v\u00e9rifier que les personnes recevant les erreurs les corrigent. En d&#8217;autre terme, les r\u00e9sultat de l&#8217;int\u00e9gration continue doivent \u00eatre utilis\u00e9! L\u00e0, on arrive plus dans la gestion de projet.<\/li>\n<\/ul>\n<p>Pour aller plus loin, l&#8217;excellent article de Martin Flower(en anglais) : <a href=\"http:\/\/www.martinfowler.com\/articles\/continuousIntegration.html\" target=\"_blank\"><a href=\"http:\/\/www.martinfowler.com\/articles\/continuousIntegration.html\">http:\/\/www.martinfowler.com\/articles\/continuousIntegration.html<\/a><\/a><\/p>\n<p>Continuons maintenant sur Cruise Control. En me basant sur quelques capture d&#8217;\u00e9cran, je vais faire le tours de ses fonctionnalit\u00e9s les plus courantes, sans trop aller dans le d\u00e9tails, l&#8217;application \u00e9tant tr\u00e8s compl\u00e8te. Pour aller plus loin, consultez donc son site web: <a href=\"http:\/\/cruisecontrol.sourceforge.net\/\" target=\"_blank\"><a href=\"http:\/\/cruisecontrol.sourceforge.net\">http:\/\/cruisecontrol.sourceforge.net<\/a><\/a><\/p>\n<!--more-->\n<h3>1. L&#8217;application de configuration<\/h3>\n<p>Lancez tout d&#8217;abord l&#8217;application de configuration de Cruise Control ( CruiseConfig) qui est une application Java Webstart, ce qui est fort pratique car vous pouvez alors la lancer depuis un ordinateur diff\u00e9rent de votre serveur d&#8217;int\u00e9gration. Vous obtenez alors cela:<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-01.jpg?w=640\" alt=\"Cruise Control - Cruise Config\" \/>\n<p>Cette application vous permet de monitorer les diff\u00e9rents projets d\u00e9finie et de les configurer en cliquant sur Server -&gt; Configure Projects. C&#8217;est cette partie que nous allons voire plus en d\u00e9tail.<\/p>\n<h3>2. Configuration d&#8217;un projet<\/h3>\n<p>La configuration des projets de Cruise Control se trouve dans le fichier config.xml qui est \u00e0 la racine du r\u00e9pertoire d&#8217;installation de Cruise Control. Son \u00e9criture est facilit\u00e9e par l&#8217;application de configuration CruiseConfig qui permet de d\u00e9finir via une interface utilisateur simple les diff\u00e9rentes parties de ce fichier XML.<\/p>\n<p>On voit dans cette capture d&#8217;\u00e9cran, l&#8217;interface de modification du config.xml qui liste les propri\u00e9t\u00e9 (possibilit\u00e9 de d\u00e9finir un fichier de propri\u00e9t\u00e9),  les projets et les plugin (configuration par d\u00e9faut d&#8217;un plugin, par exemple pour configurer par d\u00e9faut ANT).<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-02.jpg?w=640\" alt=\"Cruise Control - Configuration d\u2019un projet\" \/>\n<p>Pour configurer un projet, le principe est le suivant:<\/p>\n<ul><li><strong>modificationset <\/strong>: configurer le gestionnaire de source control pour pouvoir lister les changements depuis la derni\u00e8re compilation et mettre \u00e0 jour ses sources.<\/li>\n\n<li><strong>schedule <\/strong>: configurer les t\u00e2ches \u00e0 lancer tel que la compilation ou le lancement des tests (ANT, MAVEN)<\/li>\n\n<li><strong>log <\/strong>: configurer les fichiers de logs du projet. Cruise Control se base uniquement sur les fichiers de logs g\u00e9n\u00e9r\u00e9s lors de la compilation ou de l&#8217;ex\u00e9cution des tests.<\/li>\n\n<li><strong>publishers <\/strong>: permet de d\u00e9finir quoi faire apr\u00e8s une t\u00e2che (envoi de mails, copie de fichier, &#8230;)<\/li>\n\n<li><strong>listeners <\/strong>: permet de d\u00e9finir des \u00e9l\u00e9ments de contr\u00f4le du d\u00e9roulement des t\u00e2ches<\/li>\n<\/ul>\n<p>La premi\u00e8re page du projet permet de d\u00e9finir des \u00e9l\u00e9ments globaux tel que le nom du projet, la n\u00e9cessit\u00e9 d&#8217;avoir des modifications au sein du gestion de source avant de lancer une t\u00e2che, &#8230;<\/p>\n<p>Tout les \u00e9l\u00e9ments de configuration sont expliqu\u00e9 gr\u00e2ce \u00e0 un fichier d&#8217;aide HTML chang\u00e9 en dessous.<\/p>\n<h4>2.1 modificationset de type clearcase<\/h4>\n<p>Je n&#8217;ai utilis\u00e9 que le modificationset de clearcase, donc c&#8217;est celui-ci dont je vais parler ici. Mais il en existe pour la plupart des type de gestionnaire de source du march\u00e9.<\/p>\n<p>Le principe est de d\u00e9finir le gestionnaire de source pour que cruise control puisse mettre \u00e0 jour ses sources (faire un update) et aussi savoir qui sont les contributeur des derni\u00e8res modifications, ces informations lui seront tr\u00e8s utile plus tard.<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-03.jpg?w=640\" alt=\"Cruise Control - Configuration d\u2019un modificationset\" \/>\n<p>Les principales propri\u00e9t\u00e9 de configuration sont:<\/p>\n<ul><li><strong>QuietPeriod <\/strong>: p\u00e9riode minimale en seconde d&#8217;inaction dans le gestionnaire de source avant de faire un update. Cela permet de ne pas faire d&#8217;update au milieu d&#8217;un checkin\/commit<\/li>\n\n<li><strong>ViewPath <\/strong>: chemin de la vue clearcase dans laquelle l&#8217;update se fait.<\/li>\n\n<li><strong>Branch <\/strong>: stream clearcase (si elle n&#8217;est pas pr\u00e9cis\u00e9, les modifications list\u00e9 par Cruise Control seront toutes stream!)<\/li>\n<\/ul>\n<h4>2.2 schedule de type ant<\/h4>\n<p>Enfin, on entre dans le vif du sujet! Les t\u00e2ches \u00e0 effectuer. C&#8217;est ici que l&#8217;on d\u00e9finie ce que va faire Cruise Control. Pour cela, tout simplement on peut appeler p\u00e9riodiquement des scripts ANT ou MAVEN (d&#8217;autres sont disponible).<\/p>\n<p>Les possibilit\u00e9 d&#8217;appel sont divers: \u00e0 une heure pr\u00e9cise ou p\u00e9riodiquement (en seconde), on peut aussi d\u00e9finir des pauses ou des jours pr\u00e9cis, &#8230;<\/p>\n<p>Quelques propri\u00e9t\u00e9s sont d\u00e9finie au niveau global du schedule:<\/p>\n<ul><li><strong>Interval <\/strong>: interval de la t\u00e2che (en seconde)<\/li>\n\n<li><strong>ShowInProgress <\/strong>: affichage d&#8217;une barre de progression si support\u00e9 par le plugin<\/li>\n<\/ul>\n<p>Pour faciliter la d\u00e9finition des taches dans les diff\u00e9rents projets, j&#8217;ai d\u00e9finit une configuration globale pour ANT, pour Cruise Control on appel cela d\u00e9finit une configuration d&#8217;un plugin (tout est plugin pour Cruise Control &#8230; et bien sur on peut d\u00e9finir les siens propre en plus de ceux par d\u00e9faut)<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-04.jpg?w=640\" alt=\"Cruise Control - Configuration d\u2019un plugin ant\" \/>\n<p>Ensuite, par projet, j&#8217;ai red\u00e9finit juste les propri\u00e9t\u00e9 qui m&#8217;int\u00e9ressaient<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-05.jpg?w=640\" alt=\"Cruise Control - Configuration d\u2019un schedule\" \/>\n<p>Explications des propri\u00e9t\u00e9s les plus utilis\u00e9es:<\/p>\n<ul><li><strong>Taget<\/strong>: la target ANT appel\u00e9e.<\/li>\n\n<li><strong>SaveLogDir<\/strong>:  le r\u00e9pertoire dans lequel est mis le log de ANT (remarquez ici l&#8217;utilisation d&#8217;une variable de CruiseControl: project.name).<\/li>\n\n<li><strong>AntHome<\/strong>: le r\u00e9pertoire d&#8217;installation de ANT.<\/li>\n\n<li><strong>UseLogger<\/strong>: ANT utilisera un Logger au lieu de la console (conseill\u00e9 pour des raisons de performance).<\/li>\n\n<li><strong>UseDebug<\/strong>: Si vous voulez lancer ANT en mode debug (attention aux performances!).<\/li>\n\n<li><strong>UseQuiet<\/strong>: L&#8217;inverse de UseDebug &#8230;<\/li>\n\n<li><strong>KeepGoing<\/strong>: Lance ant avec l&#8217;option -keep-going<\/li>\n\n<li><strong>Time<\/strong>: Permet de d\u00e9finir \u00e0 quelle heure le script est lanc\u00e9, dans ce cas l\u00e0, la propri\u00e9t\u00e9 Interval est ignor\u00e9e<\/li>\n<\/ul>\n<h4>2.3 log<\/h4>\n<p>Cruise control d\u00e9finit un fichier de log XML unique pour chaque compilation de chaque  projet.<\/p>\n<p>On peut ensuite configurer le r\u00e9pertoire o\u00f9 Cruise Controle placera ce fichier de log et optionnellement, des fichiers de logs ext\u00e9rieurs que nous voudrions merger \u00e0 ce fichier de log primaire (log ANT, JUNIT, &#8230;)<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-06.jpg?w=640\" alt=\"Cruise Control - configuration des logs\" \/>\n<p>Le snapshot me semble \u00e9loquant sans explications :)<\/p>\n<p>L&#8217;application de reporting et le dashboard utilisent ce fichier de log XML pour pr\u00e9senter les donn\u00e9e d&#8217;une compilation. Il est d&#8217;ailleurs lui-m\u00eame accessible depuis ces applications.<\/p>\n<h4>2.4 publishers<\/h4>\n<p>Un publisher permet, comme son nom l&#8217;indique de publier des donn\u00e9es en fin de compilation.\nJe vais ici \u00e9voquer deux publisher tr\u00e8s utile: l&#8217;arifact publisher et le l&#8217;htmlmail publisher<\/p>\n<h5>2.4.1 artifact publisher<\/h5>\n<p>L&#8217;artifact publisher permet, en fin de compilation, de publier dans un repertoir pr\u00e9cis un fichier donn\u00e9. Il permet par exemple de copier le JAR g\u00e9n\u00e9r\u00e9 par ANT dans un r\u00e9pertoire donn\u00e9. Ce fichier artifact sera ensuite accessible depuis l&#8217;application de reporting et le dashboard.<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-07.jpg?w=640\" alt=\"Cruise Control - configuration de l\u2019artifactpublisher\" \/>\n<p>Les principales propri\u00e9t\u00e9s sont:<\/p>\n<ul><li><strong>File<\/strong>: le fichier \u00e0 exporter (il faut utiliser soit File, soit Dir)<\/li>\n\n<li><strong>Dir<\/strong>: le r\u00e9pertoire \u00e0 exporter (il faut utiliser soit File, soit Dir)<\/li>\n\n<li><strong>Dest<\/strong>: le r\u00e9pertoire de destination, Cruise control cr\u00e9era ensuite un sous r\u00e9pertoire par compilation et placera dedans le ou les fichiers \u00e0 exporter.<\/li>\n\n<li><strong>PublishOnFailure<\/strong>: si oui ou non la publication doit se faire en cas de failure de la compilation.<\/li>\n<\/ul>\n<h5>2.4.2 htmlmail publisher<\/h5>\n<p>Le grand int\u00e9r\u00eat de Cruise Control r\u00e9side dans sa possibilit\u00e9 d&#8217;envoyer un mail automatique en fin de compilation. Ce mail pouvant se baser sur les utilisateurs ayant fait des modifications pour les informer qu&#8217;une compilation a \u00e9t\u00e9 faites contenant leurs changements et du r\u00e9sultat de la compilation. C&#8217;est sans doute la fonctionnalit\u00e9 la plus utilise de Cruise Control.<\/p>\n<p>Tout d&#8217;abord, pour \u00e9viter trop de configuration dans chaque tache mail de chaque projet, j&#8217;ai d\u00e9finit une configuration par d\u00e9faut du plugin de mail<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-08.jpg?w=640\" alt=\"Cruise Control - configuration du plugin htmlmail\" \/>\n<p>Les principales propri\u00e9t\u00e9s sont:<\/p>\n<ul><li><strong>MailHost<\/strong>: l&#8217;adresse du serveur SMTP<\/li>\n\n<li><strong>MailPort<\/strong>: le port du serveur SMTP si diff\u00e9rent du port par d\u00e9faut<\/li>\n\n<li><strong>ReturnAddress<\/strong>: l&#8217;adresse qui va envoyer le mail<\/li>\n\n<li><strong>DefaultSuffix<\/strong>: le suffixe qui permet de passer des utilisateurs du gestionnaire de source \u00e0 son adresse mail. Par exemple, si vos utilisateurs s&#8217;appellent &#8216;toto&#8217; et &#8216;tata&#8217; et que votre DefaultSuffix est &#8216;@mondomaine.com&#8217;, les emails seront envoy\u00e9 \u00e0 &#8216;toto@mondomaine.com&#8217; et &#8216;tata@mondomaine.com&#8217;<\/li>\n<\/ul>\n<p>Ensuite on d\u00e9finit l&#8217;htmlemail du projet avec juste les propri\u00e9t\u00e9s manquantes<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-09.jpg?w=640\" alt=\"Cruise Control - configuration du htmlmailpublisher\" \/>\n<p>Les principales propri\u00e9t\u00e9s sont:<\/p>\n<ul><li><strong>SubjectPrefix<\/strong>: Le prefix du sujet du mail. Cruise Control y ajoutera ensuite le num\u00e9ro de compilation et le statuts (success, failed, fixed &#8211; statuts donn\u00e9 pour une compilation r\u00e9ussie apr\u00e8s une compilation rat\u00e9e)<\/li>\n\n<li><strong>BuildResultUrl<\/strong>: L&#8217;URL mise en d\u00e9but de mail pour pouvoir consulter les r\u00e9sultats de la compilation.<\/li>\n<\/ul>\n<h4>2.5 listeners<\/h4>\n<p>Permet de d\u00e9finir un listener (un &#8216;\u00e9couteur&#8217;, donc quelque chose qui \u00e9coute en temps r\u00e9\u00e9l) de la compilation. Utile pour suivre en temps r\u00e9\u00e9l la compilation.<\/p>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/cruise-control-10.jpg?w=640\" alt=\"Cruise Control - configuration d\u2019un listener\" \/>\n<p>Ici, j&#8217;ai utilis\u00e9 un currentbuildstatuslistener qui se configure via la propri\u00e9t\u00e9 <strong>File <\/strong>qui d\u00e9finit le fichier dans lequel le statuts de la compilation est inscrit.<\/p>\n<h4>3 Aller plus loin<\/h4>\n<p>Pour aller plus loin, le mieux est d&#8217;installer Cruise Control et de fouiller. Une fois familiariser avec sa configuration gr\u00e2ce \u00e0 ce tutoriel et \u00e0 l&#8217;aide contextuelle, configurer le reste est tr\u00e9s simple.<\/p>\n<p>Les fonctionnalit\u00e9s de Cruise Control sont tr\u00e9s compl\u00e8tes, quelques exemples de ce qui n&#8217;a pas \u00e9t\u00e9 abord\u00e9:<\/p>\n<ul><li><strong>delete<\/strong>: cr\u00e9ation de tache de suppression des fichiers g\u00e9n\u00e9r\u00e9 par Cruise Control<\/li>\n\n<li><strong>pause<\/strong>: permet de d\u00e9finir des p\u00e9riode de pause dans la compilation(\u00e9viter de compiler toute la nuit par exemple)<\/li>\n\n<li><strong>always, onsuccess, onfailure<\/strong>: capacit\u00e9 \u00e9tendue d&#8217;envoi de mail<\/li>\n\n<li>possibilit\u00e9 de mapper les utilisateurs du gestionnaire de source sur des adresse email via un fichier de propri\u00e9t\u00e9<\/li>\n\n<li>&#8230;<\/li>\n<\/ul>\n<p><strong><strong><em> UPDATE <\/em><\/strong><\/strong><\/p>\n<p>J&#8217;ai \u00e9crit un article sur d\u00e9veloppez.com, inspir\u00e9 de celui-ci (et enrichi).\n<a href=\"http:\/\/loic-mathieu.developpez.com\/conception\/article\/cruise-control\/\"><a href=\"http:\/\/loic-mathieu.developpez.com\/conception\/article\/cruise-control\/\">http:\/\/loic-mathieu.developpez.com\/conception\/article\/cruise-control\/<\/a> <\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Derni\u00e8rement, j&#8217;ai essay\u00e9 un serveur d&#8217;int\u00e9gration continue : Cruise Control. Je vais donc vous en parler ici. Tout d&#8217;abord, qu&#8217;est-ce que l&#8217;int\u00e9gration continue: L&#8217;int\u00e9gration continue est une technique de d\u00e9veloppement\/management de projet qui implique d&#8217;int\u00e9grer tr\u00e8s fr\u00e9quemment le travail de tout les membres. Ensuite, une compilation automatique doit \u00eatre lanc\u00e9 pour v\u00e9rifier les \u00e9ventuelle erreurs de compilation du projet puis si possible les tests unitaires doivent aussi \u00eatre lanc\u00e9e. Concr\u00e8tement, l&#8217;int\u00e9gration continue est le fait d&#8217;automatiser des compilations fr\u00e9quentes du&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/integration-continue\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[151,12,11],"class_list":["post-40","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-informatique","tag-integration-continue","tag-java"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":533,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/openesb-community-day-2011\/","url_meta":{"origin":40,"position":0},"title":"OpenESB Community Day 2011","author":"admin","date":"Thursday March 24th, 2011","format":false,"excerpt":"Le 03\/03\/2011 s'est d\u00e9roul\u00e9 \u00e0 Lille (exactement \u00e0 Polytech Lille \u00e0 Villeneuve d'Ascq) l'OpenESB Community Day. Une journ\u00e9e de conf\u00e9rence autour d'OpenESB centr\u00e9 sur la communaut\u00e9 de d\u00e9veloppeur et d'utilisateur. OpenESB est une impl\u00e9mentation Open Source d'un ESB (Enterprise Service Bus) d\u00e9velopp\u00e9 par Sun, qui a \u00e9t\u00e9 abandonn\u00e9 par Oracle\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":39,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/sitemesh-gerer-son-layout-sans-douleur\/","url_meta":{"origin":40,"position":1},"title":"Sitemesh : g\u00e9rer son layout sans douleur","author":"admin","date":"Friday July  6th, 2007","format":false,"excerpt":"Sitemesh permet de g\u00e9rer facilement le layout des application web JAVA. Une petite description de comment il marche.","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":92,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/rest-architecture-orientee-ressource\/","url_meta":{"origin":40,"position":2},"title":"REST &#8211; Architecture Orient\u00e9e Ressource","author":"admin","date":"Wednesday March 25th, 2009","format":false,"excerpt":"Au menu aujourd'hui, un sujet tr\u00e8s tendance: REST. Abord\u00e9\u00a0 par le biais de l'Architecture Orient\u00e9 Ressource (ou ROA: Resource Oriented Architecture), autrement dit, comment cr\u00e9er une architecture de service bas\u00e9 sur REST. D\u00e9finitions Comme toujours, commen\u00e7ons par quelques d\u00e9finitions. Je vais les faire assez th\u00e9orique sinon apr\u00e8s, il ne me\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":21,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/spams-vont-ils-faire-tomber-le-web\/","url_meta":{"origin":40,"position":3},"title":"SPAMS : vont-ils faire tomber le web?","author":"admin","date":"Tuesday March  6th, 2007","format":false,"excerpt":"Un petit coup de gueule. Il y a peu, certaines pages de mon blog sont entr\u00e9 dans les r\u00e9sultats de google (et peut-\u00eatre d'autres moteurs de recherche) et d'un seul coup, je suis submerg\u00e9 de spam sur les commentaire de mes articles. Quelle ironie, j'ai plus de 10 commentaires par\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":64,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/convention-over-configuration\/","url_meta":{"origin":40,"position":4},"title":"convention over configuration","author":"admin","date":"Wednesday December 19th, 2007","format":false,"excerpt":"\"Convention over Configuration\" (on trouve parfois une traduction par \"convention plut\u00f4t que configuration), ce design pattern (ou patron de conception, pour faire plaisir aux francophones intransigeant) est un des plus int\u00e9r\u00e9ssant de ceux \u00e0 la mode en ce moment. Le principe en est tr\u00e8s simple: les applications se basent sur\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1668,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/devoxx-fr-2023-hidden-security-features-of-th-jvm-everything-you-didnt-know-and-more-par-steve-poole\/","url_meta":{"origin":40,"position":5},"title":"(Fran\u00e7ais) Devoxx FR 2023 &#8211; Hidden security features of the JVM &#8211; everything you didn&#8217;t know and more par Steve Poole","author":"admin","date":"Friday April 14th, 2023","format":false,"excerpt":"Sorry, this entry is only available in Fran\u00e7ais.","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}