IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qualimétrie Discussion :

Hudson et build Ant [Sonar]


Sujet :

Qualimétrie

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 56
    Points
    56
    Par défaut Hudson et build Ant
    Bonjour,

    J'aimerais savoir s'il y a une incidence sur le fait d'utiliser Ant et Hudson pour l'automatisation des builds avec Sonar ? Cette architecture est-elle possible ? Si non y a t'il un logiciel autre que Sonar utilisant Ant ?

    J'ai vu que Sonar a besoin de l'installation de Maven
    Mais a t-il juste besoin de Maven pour lui en interne ?
    Ou y a t'il vraiment une nécessiter de "builder" avec Maven ?

    Je ne pense pas que Sonar refuse les builds Ant étant donné que se sont les plus rependus dans le monde professionnel (à confirmer lol).

    Si quelqu'un pouvait me confirmer la possibilité d'utiliser Ant et m'éclaircir sur le besoin d'installer Maven sous sonar

    Merci beaucoup.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Points : 794
    Points
    794
    Par défaut
    Hudson est un serveur d'intégration. Il manège des jobs qui orchestre une chaine de d'intégration, lancée suite à un déclenchement manuelle ou automatique.
    Cette chaine d'intégration comporte différentes étapes comme des étapes de build, de la génération documentaires, des tests.... Ces étapes peuvent être implémentées par l'outil ANT. Et Hudson peut lancer des commandes ANT.

    Sonar est un dashboard de métriques qui a pour objectif de collecter le résultat de l'application de différentes outils de métriques sur votre projet.
    Ces métriques seront lancés par Sonar (pour cela il s'appuie sur un ensemble de plugins Maven de métriques – Sonar tire profit des conventions Maven) ou en mode dit 'light'. Dans ce dernier cas, une partie des rapports des outils de métriques (tests, couverture de code, ...) peut être générés par des outils extérieurs à Sonar/Maven comme ANT ou d'autres, puis Sonar les réutilise.
    Néanmoins, le reste des autres métriques (comme checkstyle par exemple) reste lancés par Maven.
    De plus, dans les deux cas (mode normal et mode light), la demande de lancement/collecte des métriques se fait à travers l'invocation d'une commande Maven 'mvn sonar:sonar' (avec un ensemble de propriétés systèmes pour le Sonar light mode (-Dsonar....).
    Cette commande Maven est lancée manuellement ou par le plugin Sonar de Hudson facilitant l'appel de cette commande avec les bons paramètres.

    Dans tous les cas, Sonar a toujours besoin de Maven pour invoquer et traiter les métriques.
    Ceci peut être un frein dans certaines organisations en terme d'infrastructure et peut sembler inappropriée pour l'utilisation de Sonar avec d'autres langages.
    L'équipe Sonar en est consciente de cette limitation potentielle mais ce n'est pas pour le moment leurs priorités.

    Ainsi, si tu n'a pas de problèmes à l'installation d'une infrastructure de type Maven (comme par exemple la mise en place d'un repository d'entreprise contenant tous les artefacts nécessaires), tu pourras utiliser Sonar avec un processus d'intégration utilisant Ant.

    Est-ce que cela répond à ta question?

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 56
    Points
    56
    Par défaut
    --------------------------------------------------------------------------------

    Merci de ta réponse.
    Petite info : L'entreprise dans laquelle je me trouve utilise les scripts Ant pour faire la compilation et le package pour pouvoir livrer le projet

    Si je comprends bien.
    Je peux d'après ta réponse utiliser
    ------Ant pour générer certaines métriques.
    ------Maven pour générer d'autres métriques.
    Ensuite Sonar les récupère et fait son rôle de dashboard mais a besoin de Maven. Sauf que si je comprend bien cela complique beaucoup le problème car il faudra écrire deux fichiers XML avec deux façons de penser à la Ant et à la Maven.

    J'ai vu que l'on peut "Maveniser" un projet dans un article de developpez.com. Mais Maven préfère que les projets respectent sa convention. Hors les répertoires des projets n'ont aucun rapport avec ce que préconise Maven. Enfin bref

    Je ne sais vraiment pas dans quelle direction partir !!

  4. #4
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 90
    Points
    90
    Par défaut
    Salut,

    Sinon a la place de sonar tu peux utiliser d'autre outil de metrique : PMD, checkstyle, findbugs, jDepend, covertura,... qui ont une integration dans Ant.

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 56
    Points
    56
    Par défaut
    Merci youkoun

    Donc si je comprends bien les plugins tel que PMD, FindBugs, CheckStyle, JDepend...peuvent être utilisé avec Ant. Donc si j'utilise que Hudson avec les plugins cités au dessus et un plugin de Dashboard. Cela devrait fonctionner.

    Mais le problème ce que Sonar à d'autres utilités intéressantes mais bon je ne peux de toute façon pas Maveniser les projets, il y a beaucoup de dépendence et l'arborescence des projets est trop complexe pour être cassé et reconstruite sous la convention Maven. De plus je ne suis pas un pro de l'architecture informatique !!!

    Donc pas le choix Ant, sinon j'ai vue que CruiseControl et Anthill (version gratuite) fonctionne très bien sous Ant. Mais peut de personne utilise Anthill donc difficile de trouver des documents intéressants dessus contrairement à CruiseContrôl.

    Enfin Bref, je ne sais toujours pas dans quelle direction partir mais l'étau se ressert.

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 56
    Points
    56
    Par défaut
    Salut

    Pour l'instant mes recherches m'ont permis de découvrir l'intégration continue que je ne connaissais pas. Puis les outils de builds tel qu’Ant et Maven. Ensuite plusieurs outils pour l'intégration continue tels qu’Hudson, CruiseControl, Anthill, LuntBuild, Continuum et TeamCity.

    L'entreprise utilise des builds Ant donc Continuum est à exclure ne prennant pas en compte les builds Ant. Anthill et Luntbuild sont gratuits mais que dans leur version "soft" non professionnel donc je ne sais pas si cela à des conséquences sur le logiciel.

    J'ai installé Hudson et CruiseControl. Hudson est vraiment simple et très facile à utiliser. CruiseControl est lui difficile à configurer mais c'est une valeur sure.

    En ce moment j'attends la permission de l'entreprise pour pouvoir me connecter au SVN sur un projet "pipo". Pour pouvoir faire des tests. Je te tiendrais au courant sur les résultats de mes tests et sur le logiciel que je choisirais.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Pareil pour moi, j'ai découvert récemment l'IC.
    J'ai opté pour Hudson, et Ant est l'outil de build. C'est bien pour cela que je suis dans le même cas que toi (J'ai failli croire un moment que j'étais l'auteur du post ^^).

    Je viens de faire une petite config de Hudson, histoire de voir qu'un build passe normalement, je n'ai eu que des échecs de build, mais là, c'est OK. Je viens d'installer des plugin pour voir ce que ca me donne. (Moi c'est CVS par contre et non SVN, mais bon....).

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 56
    Points
    56
    Par défaut
    Bonjour
    J'ai une question
    Comment as tu fait pour télécharger les plugins Ant ?
    Car je n'arrive pas à télécharger les plugins via Hudson j'obtiens le message suivant
    Caused by: java.io.FileNotFoundException: http://updates.hudson-labs.org/downl...vs/1.1/cvs.hpi
    Donc je les télécharger directement via l'adresse http://download.java.net/maven/2/org/jvnet/hudson/plugins/ mais comme on peut le voir se sont des plugins MAVEN (« enfin je suppose donc ils doivent fonctionner que sous Maven ????»)
    Quelqu'un connaitrait un autre site pour télécharger les plugins Ant pour Hudson en .hpi ?
    Ou si quelqu'un sait comment résoudre le problème de connexion de Hudson ?

    Merci

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Ben les plugin sont directement disponibles sur le tableau de bord de Hudson,
    Tu vas dans administrer Hudson-> gestion des plugins, tu clique sur l'onglet "disponibles" et la tu choisi les plugins à installer en cochant tout simplement dessus puis cliquer sur installer. Il faut par contre redémarré Hudson par la suite. Les plugins seront visibles sur ton panneau de configuration Hudson, tu n'aura qu'à cocher, pour le moment je fais des test avec checkstyle, mais je pense qu'il faut lui insérer des paramètres car il me met
    Checkstyle: 0 warnings dans 0 fichiers Checkstyle. " # No warnings since build 14.
    # New zero warnings highscore: no warnings since yesterday!
    # During parsing an error has been reported.

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Points : 794
    Points
    794
    Par défaut
    @yyusy

    - Concernant Hudson, les plugins Hudson sont construits avec Maven mais il s'agit de plugins a destination du système Hudson. Une fois construit, les plugin n'ont pas de liens avec Maven ou Ant.
    Rappelons que Hudson est cron de luxe qui exécute des scripts Ant ou Maven par exemple

    -Concernant Ant/Maven/Sonar/Hudson
    Les outils de métriques (PMD, Checkstyle, ...) peuvent être lancés par Ant (via des taches ANT) ou via Maven (plugin Maven).
    Les résultats de l'exécution des métriques peuvent être ensuite afficher sous forme de graphe dans Hudson (via les plugins de métriques de Hudson, plugin de même nom: PMD, Checkstyle, ...).
    Mais tous les résultats de ces métriques ne sont pas agrégés: ce qui est en revanche le role de Sonar (avec plein d'autres choses).

    Encore une fois, Sonar peut se charger de lancer les métriques (certes avec Maven) mais cela complètement transparent. Le fichier Maven que Sonar exécute sera généré dans ton cas par le plugin Sonar de Hudson.
    Ainsi pas de soucis pour avoir une chaîne de build (compilation, ....) en Ant et le reporting a travers Sonar qui exécutera du Maven mais sans avoir besoin d'écrire du Maven.

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup pour ta réponse qui vient d'éclaircir des grandes interrogations.

    Projet avec des builds Ant -> Hudson lance les builds Ant -> Ajout de Plugin de métrique construit sous Maven mais utilisable avec Ant -> Sonar qui va lancer Hudson via le plugin sonar plugin -> Sonar va ensuite agréger les résultats des plugins de métrique

    J'ai besoin pour ma solution de apache Ant avec Hudson (que je déploie sur un serveur d'application type Tomcat) ensuite j'installe différents plugins (style checkStyle, PMD, FindBugs sans oublier sonar plugin) ensuite j'installe Maven, et je déploie Sonar sur le serveur d'application.

    dossier
    - apache-ant-x.x.x
    - apache-tomcat-x.x.x
    - apache-maven-x.x.x
    - hudson.war => pour déploiement sur Tomcat
    - sonar.war => pour déploiement sur Tomcat
    - work => dossier de travail d'hudson

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 57
    Points : 56
    Points
    56
    Par défaut
    Voic mon build Ant
    l'espace de travail d'hudson F:\IntegContinue\work
    le repertoire du projet F:\IntegContinue\Projet 4
    le projet contien:
    \src: fichier .java
    \bin: ficheir .class
    \exe: fichier .jar
    \conf: fichier des regles de code checkstyle et pmd (sun_checks.xml et regle_pmd.xml)
    build.xml

    dans l'espace de travail d'hudson \jobs\Essais\workspace qui le repertoire de travail du projet 4 nommé Essais sous Hudson. On trouve les rapports pulbliés par checkstyle et pmd


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <project default="run">
      <!-- On définit l'emplacement du fichier src, bin et exe. -->
      <property name="src.dir" value="src" /> 
      <property name="bin.dir" value="bin" /> 
      <property name="jar.dir" value="exe" /> 
      <!-- On définit le fichier Java HelloWorld. -->
      <property name="Main-Class" value="org.sdf.HelloWorld" />
      <!-- On définit le repertoire home de findbugs, pmd et checkstyle.  -->
      <property name="findbugs.home" value="F:\IntegContinue\work\plugins\findbugs-4.8\WEB-INF\lib" />
      <property name="pmd.home" value="F:\IntegContinue\work\plugins\pmd-3.6\WEB-INF\lib\pmd-4.2.4.jar" /> 
      <property name="checkstyle.home" value="F:\IntegContinue\work\plugins\checkstyle-3.6\WEB-INF\lib\checkstyle-all-4.4.jar" /> 
      <!-- On définit l'emplacement du projet. -->
      <property name="build" value="F:\IntegContinue\Projet 4" />
      
      <!-- On définit la première tache du build qui est CLEAN qui va supprimer les anciens répertoires "\bin" et "\exe". -->
      <target name="clean">
        <delete dir="${bin.dir}" /> 
        <delete dir="${jar.dir}" /> 
        <echo message="Netoyage termine" /> 
      </target>
      
      <!-- On définit la deuxième tache du build qui est COMPILE qui va créer le répertoire "\bin" et compiler à l'aide des fichiers ".java" présent dans le "\src" pour créer les fichiers ".class" dans le répertoire "\bin". -->
      <target name="compile" depends="clean">
        <mkdir dir="${bin.dir}" /> 
        <javac srcdir="${src.dir}" destdir="${bin.dir}" /> 
        <echo message="Compilation terminee" /> 
      </target>
      <!-- On définit la troisième tache du build qui est JAR qui va créer le répertoire "\exe" et créer le fichier ".jar" à l'aide des fichiers ".class" présent dans le bin, il va aussi générer un manifest où seront présent tout les fichiers à utiliser pour creer le fichier ".jar" dans le répertoire "\exe". -->
      <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}" /> 
        <jar destfile="${jar.dir}/HelloWorld.jar" basedir="${bin.dir}">
          <manifest>
            <attribute name="Main-Class" value="${Main-Class}" /> 
          </manifest>
        </jar>
        <echo message="Creation du fichier jar terminee" /> 
      </target>
      
      <!-- On définit la quatrième tache du build qui est RUN qui va executer le fichier ".jar" présent dans le répertoire "\exe". -->
      <target name="run" depends="jar">
        <java jar="${jar.dir}/HelloWorld.jar" fork="true" /> 
        <echo message="Execution terminee" /> 
      </target>
    	
      <!-- On définit une tache du build qui est RUN-CHECKSTYLE qui va lancer une analyse, via checkstyle, du code présent dans le répertoire "\src" en fichier ".java" et créer un rapport "checkstyle_errors.xml", il utilise pour cela la configuration défini par "sun_checks.xml" présent dans le répertoir "/conf" du projet. -->
      <taskdef resource="checkstyletask.properties" classpath="${checkstyle.home}" /> 
      <target name="run-checkstyle">
        <checkstyle config="conf/sun_checks.xml">
          <fileset dir="${src.dir}" includes="${Main-Class}.java" /> 
          <formatter type="xml" toFile="checkstyle_errors.xml" />
        </checkstyle>
        <echo message="Analyse avec checkstyle terminee" />  
      </target> 
    	
        <!-- On définit un classpath dans lequel on place les dépendances de PMD. -->
      <target name="run-pmd" description="Contrôle de la qualité du code">
        <path id="pmd.classpath">
          <pathelement location="F:\IntegContinue\work\plugins\pmd-3.6\WEB-INF\lib\pmd-4.2.4.jar" />
          <pathelement location="F:\IntegContinue\work\plugins\pmd-3.6\WEB-INF\lib\asm-3.1.jar" />
          <pathelement location="F:\IntegContinue\work\plugins\pmd-3.6\WEB-INF\lib\backport-util-concurrent-3.1.jar"/>
          <pathelement location="F:\IntegContinue\work\plugins\pmd-3.6\WEB-INF\lib\jaxen-1.1.1.jar" />
        </path>
        <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath" />
        <pmd rulesetfiles="conf/pmd rules/regles-pmd-naming.xml">
          <formatter type="xml" toFile="${work.dir}\pmd_errors.xml"/>
          <fileset dir="${src.dir}" includes="\org\sdf\*.java"/>
        </pmd>
        <echo message="Analyse avec pmd terminee" />  
      </target>
    
    
      <!-- On définit une tache du build qui est RUN-FINDBUGS qui va lancer une analyse, via findbugs, du code présent dans le répertoire "\src" en fichier ".java" et créer un rapport "findbugs_errors.xml". -->
      <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpath="${findbugs.home}\findbugs.jar" />
      <target name="run-findbugs" depends="jar">
        <findbugs home="${findbugs.home}" output="xml" outputFile="F:\IntegContinue\Projet 4\findbugs_errors.xml" >
          <sourcePath path="${src.dir}" />
          <class location="${bin.dir}/org/sdf/HelloWorld.class" />
        </findbugs>
      </target>
    </project>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. garder synchroniser build ant et pom.xml
    Par pcouas dans le forum Maven
    Réponses: 3
    Dernier message: 03/03/2010, 23h49
  2. Lancer un build ant depuis maven ?
    Par felix79 dans le forum Maven
    Réponses: 2
    Dernier message: 10/09/2009, 14h47
  3. Réponses: 6
    Dernier message: 16/01/2009, 11h00
  4. [XDOCLET] Probleme de build ANT
    Par Mayhem555 dans le forum ANT
    Réponses: 2
    Dernier message: 22/07/2008, 00h04
  5. Build Ant --> Package javax.servlet does not exist
    Par gunthi dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/04/2007, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo