Intégration Continue en .Net

Bonjour les fans de .Net et d’intégration continue!
J’affectionne Hudson en ce moment, et je l’applique de plus en plus pour .Net. Je l’utilise en ce moment pour analyser le code et « gronder » les membres du projet qui codent « mal ».
A défaut d’avoir un plugin Sonar pour .Net, Hudson et son plugin Violations fait déjà pas mal de bon rapports.
Ce plugin supporte pas mal d’outils comme FXCop ou StyleCop. Concernant ce dernier, le plugin bug avec les chemins absolus et les « \ », j’aimerai bien le corriger mais je n’ai pas trop le temps 🙂
J’ai regardé les sources de ce plugin, et ça semble assez simple.
HudsonMonitor

Ma petite application Winform qui lit le flux RSS pour afficher l’état des projets.
En ce moment c’est bien rouge… mais ça peut aussi être jaune ou vert 😉

Il supporte aussi CPD qui détecte les Copier/Coller (sans doute la source de bug la plus importante dans équipe), mais il ne supporte pas le C#… Idem, j’aurai bien aimé avoir le temps de l’implémenter.
J’ai vu que TeamCity avait sa propre tâche « Duplicates Finder« , mais ça n’a pas l’air d’être indépendant.
NDepend est magique et répond à ce besoin, mais il est payant, et non supporté par Hudson.
J’ai eu aussi envie de tester Gendarme. Encore une fois, si le temps me le permet, j’ajouterai bien le support des rapports Gendarme dans le plugin Hudson-Violations. En attendant, je peux toujours convertir le XML de Gendarme en XML FXCop (je n’ai pas encore étudié la faisabilité).
Je sais que faire évoluer Hudson ou CPD ou encore Sonar nécessite des connaissance en Java.
Mais le constat est que ces outils sont matures en Java, et les « pâles copies » en .Net ne sont pas à la hauteur (comme CC.Net par exemple).
L’investissement est très variable entre les différents projets (Violation, Sonar, etc), mais je suis convaincu qu’il en vaut le coup.
Et vous, qu’en pensez-vous?
Faut-il absolument faire du .Net pour du .Net? et s’investir sur un CC.Net vieillissant?
Hudson est-il un bon choix d’investissement?
Ne faut-il pas mieux privilégier l’investissement sur Sonar pour les rapports d’analyse?
Et la question la plus important: y a-t-il des personnes motivées par ça?
Je pense même que ça mérite un « meta-projet opensource » avec son site web, qui regroupe les outils de build et d’analyses de code en .Net, afin d’offrir une solution « packagée » pour .Net.

Publicités

6 réflexions sur “Intégration Continue en .Net

    1. Haha, ne le prend pas mal, je met d’ailleurs « mal » entre guillement 🙂
      Il y a des choses plus subjectives que d’autres…
      Les conventions par exemple, servent à avoir un code homogène au seins de l’équipe pour le rendre plus lisible aux autres membres. Mais on ne peut pas dire que c’est « mal » coder que d’utiliser une convension plus qu’une autre.

      Par contre, je me ferais bien une règle custom FXCop pour interdire les « logger.Error(exception.Message) » pour suggérer des « logger.Error(« un message lisible »,exception) »…
      Encore faut-il que les personnes de sentent concernées par une build « unstable » sous Hudson… même l’écran rouge parfois ne suffit pas 😀

  1. Merci pour le billet, l’intégration continue est un sujet très riche, en plus d’être un outil indispensable aux projets.

    pour l’instant j’utilise teamcity et ne connais pas encore hudson

    je crois que le projet qui sert de backend à teamcity est simian: http://www.redhillconsulting.com.au/products/simian/

    il fonctionne à priori pour n’importe quel format texte.

  2. Salut,

    Perso , j’utilises ccnet car le mieux adapté au différents languages utilisées dans ma boite (.NET / C / C++ avec cross compilateurs pour temps reel).
    Je n’ai malheureusement pas trouvé la souplesse souhaitée avec des outils plus recents type Udson ou autres. CCNET bien que vieissant est d’apres moi le meilleur.

    CCNET tourne en ce moment dans ma boite sur plus d’une quarantaine de projets avec analyse de code (intégration cppcheck / FxCop / Nunit / autres maison.) jusqu’aux releases (setups PC + executables pour PPC a telecharger par la cellule « essais ») et gestion des configurations (compils avec les directives ON/OFF en fonction du besoin).

    CCNET remplit donc tous mes besoins , encore une fois , beaucoup mieux que les outils type Udson trop orientes Java ou .NET et trop fermés a mon gout (surtout en ce qui concerne la publication et intégration d’outils tiers).

    Malheureusement ,ccnet et ccnetconfig (le projet qui s’est fait « eteindre » par M$) n’avancent pas assez a mon gout (surtout le second d’ailleurs…. vegetatif depuis 2008).

    Seb

    1. Salut Seb,
      Merci pour ton retour d’expérience avec CC.net. Je suis d’ailleurs curieux de savoir si ton CC.net peut déléguer des builds sur des noeuds « esclave ».

      Pour ma part, que Hudson soit en Java ou C++, je m’en fiche: c’est juste un outil qui exécute des Jobs…
      Il est vrai que de nombreux plugins soit dédiés à Java: difficile de trouver un contributeur .Net qui code en Java.
      Mais il en existe, puisqu’il y a quelques plugins pour .net:
      – Runner MSDos pour lancer tout type de job
      – Runner MSBuild pour ceux qui ne connaissent pas la ligne de commande
      – Runner Nant
      – Analyse de rapport NUnit
      – Analyse de rapport MbUnit
      – Analyse de rapport MsUnit
      – Analyse de rapport StyleCop
      – Analyse de rapport FxCop
      – Analyse de rapport Gendarme
      – Analyse des Warnings MSBuild
      – et j’en oublie

      En conclusion: Hudson ne fait qu’exécuter des Jobs, que ce soit Java, .Net, PHP ou script MSDos…
      Il a la possibilité de déléguer des Jobs à des noeuds (ex: compile moi ça sur une machine Windows, puis une machine Solaris…).
      Il possède une interface Web très Ajax et très ergonomique (avec une bonne gestion de la sécurité).
      Cette interface affiche des graphes de rapports Java ou .Net, avec une gestion de seuils qui alertent que la build est instable (ex: violations StyleCop > 30).
      Et le meilleur: il est gratuit et très ouvert, alors n’hésitez pas a contribuer dessus!

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s