Continuous/Integration/Tools/CruiseControl

Un article de Agora2ia.

< Continuous | Integration | Tools(Redirigé depuis CruiseControl)



banner.png


Sommaire

Fiche

Nom CruiseControl
Société -
Site http://cruisecontrol.sourceforge.net
Version 2.4.1 (au 13/03/2006)
Prix Gratuit.
Catégorie Outil OpenSource d'IntégrationContinue pour des outils de ConstructionDeProjet tels que Ant ou Maven.
Mots clefs Intégration continue, construction de projet, test, qualité.
WikiName EnvironnementDeDeveloppement, IntégrationContinue, ConstructionDeProjet.
Statut ArticleRedige/Trimestre1 & ArticleTodo

Présentation

CruiseControl est un outil, un moteur d'IntégrationContinue.


Le fait qu'il commence à apparaitre, chez les grandes sociétés de formations informatiques, des formations sur l'IntégrationContinue en général, et sur CruiseControl en particulier dénote de leur importance.


CruiseControl est constitué de deux modules :

  • Un "demon" tourne en permanence pour surveiller les modifications dans le gestionnaire de version (sous Windows, on pourra l'installer sous forme d'un service Windows) et déclenche le cycle d'intégration configuré pour le projet considéré.
  • Mais CruiseControl est également livré avec une application web qui permet de visualiser les résultats de l'IntégrationContinue.

Les fonctionalités

L'intégration continue sous Cruise Control

  • Architecture et installation
  • La configuration à base de plug-ins
  • L'attente des modifications
  • L'accès à un gestionnaire de version
  • Le déclenchement du build
  • La génération du rappord de build
  • La notification des développeurs
  • A l'échelle de grands projets
  • La console JMX
  • Le plug-in Eclipse Dashboard de monitoring de build


La console JMX

A voir

  • La plugin Maven
  • Les fichiers de CruiseControl sont séparés de ceux des projets, afin de faciliter le déploiement de futures versions de CruiseControl, un peu comme sur certains Wiki.
  • Voir la fonctionnalité X10.
  • Le flux RSS.


J'utilise Cruise Control

Les 5 étapes

  1. Télécharger, installer (juste dézipper à l'endroit désiré... Pas besoin de droits particuliers !!!).
  2. Configurer pour l'application à intégrer en écrivant le config.xml (notamment la connexion au gestionaire de version).
  3. Lancer le process CruiseControl
  4. Remonter une modification vers le gestionnaire de vesrion (faire un commit sous CVS ou Subversion).
  5. Déposer l'application web pour le reporting dans le conteneur de servlet, et contempler le résultat !


Avec Maven

Un petit tour sur la page des propriéts du plugin Maven...


  1. Positionner la variable maven.cruisecontrol.home (probablement dans le build.properties du profile car elle propre à la machine, pas au projet !).


Avec Maven 2

Voir aussi sur Using CruiseControl With Maven2 sur le wiki de Cruise Control.

Mettre en place l'arborescence d'intégration

Par "arborescence d'intégration" on entend l'arborescence de travail de CruiseControl au moment où il lancera un cyle.

Notre répertoire racine de travail, nommé WORK_DIR dans la documentation CruiseControl sera d:/dev/integration dans notre exemple. En dehors de ce chemin racine qui est de notre cru, tous les sous-répertoires sont issus des recommandations CruiseControl et Maven 2.


Nous obtenons donc (en gras les recommandations CruiseControl) :

d:
`-- [dev]
    `-- [integration]
        |-- [artifacts]
        |-- [checkout]
        |-- [logs]
        `-- config.xml


Le fichier config.xml de CruiseControl

Dans le fichier config.xml utiliser la balise cruisecontrol/project/schedule/maven2 :

<cruisecontrol>
     <project name="maven-idea-plugin" buildafterfailed="true">
         <!-- Bootstrappers are run every time the build runs, *before* the modification checks -->
         <bootstrappers>
             <currentbuildstatusbootstrapper
                   file="logs/maven-idea-plugin/buildstatus.txt"/>
         </bootstrappers>
 
         <!-- Defines where cruise looks for changes, to decide whether to run the build -->
         <modificationset quietperiod="10">
             <!--<cvs localworkingcopy="checkout/maven-idea-plugin"/>-->
             <svn localWorkingCopy="checkout/maven-idea-plugin"/>
         </modificationset>
 
         <schedule interval="60">
             <maven2
                   pomfile="checkout/maven-idea-plugin/pom.xml"
                   goal="clean scm:update | site"
                   />
             <!--<maven2 mvnscript="" mvnhome="" pomfile="" goal="" multiple="" time="" day=""/> -->
         </schedule>
 
         <!-- directory to write build logs to -->
         <log dir="logs/maven-idea-plugin"/>
 
         <!-- Publishers are run *after* a build completes -->
         <publishers>
             <currentbuildstatuspublisher file="logs/maven-idea-plugin/buildstatus.txt"/>
 
             <artifactspublisher
                   dir="checkout/maven-idea-plugin/target/output"
                   dest="artifacts/maven-idea-plugin"/>
         </publishers>
     </project>
 </cruisecontrol>


Le fichier pom.xml de Maven 2 pour le projet

Voici le début d'un exemple de fichier POM Maven 2 :

<?xml version="1.0" encoding="ISO-8859-1"?>
<project
      xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>net.2ia.plugin</groupId>
    <artifactId>maven-idea-plugin</artifactId>
    <packaging>maven-plugin</packaging>
    <version>1.00-SNAPSHOT</version>
    <name>Maven Idea Plugin from 2ia.net</name>
    <description>
        Nouveau plugin permettant de generer, de facon customizable par l'utilisateur,
        un projet IDEA à partir du POM Maven 2 d'un projet.
    </description>
    <inceptionYear>2006</inceptionYear>

    <scm>
      <connection>scm:svn:http://home.2ia.net/svn/forge/maven-idea-plugin</connection>
      <url>http://home.2ia.net/svn/forge/maven-idea-plugin</url>
    </scm>

Tarifs

Retours d'experience

Thèmes connexes

Ressources



Conclusion