vendredi 8 novembre 2013

Processus de release automatisé avec maven-release et Jenkins


Prérequis

  • Jenkins (Et une connaissance de base de celui-ci)
  • Un dépôt de sources (Ici SVN)
  • Un dépôt d’artefacts (Ici Archiva)
  • Un projet maven

Paramétrage du projet Maven

  • Aller dans le pom.xml du projet (Pom parent si multi module)
  • Ajouter le lien vers le SCM 

  scm:svn:{url trunk}
  scm:svn:{url trunk}

  • Ajouter le pluggin

  
   
    
     org.apache.maven.plugins
     maven-release-plugin
     2.4.1
     
      @{project.version}
      deploy
      true
     
    
   
  

  • Commit

Paramétrage de Jenkins

  1. A partir de la page principale de Jenkins cliquer sur 'Administrer Jenkins'
  2. Puis 'Gestion des plugins'
  3. Si le plugin 'Maven Integration pluggin' n'est pas installé, ajoutez le
  4. Ajouter le plugin 'Jenkins Maven Release Plugin'
  5. Redemarrer Jenkins
  6. Afin que le plugin puisse créer les tags et archivers les artefacts dans le dépôt il faut qu'il puisse s'authentifier. Pour cela j'ai utilisé le settings.xml dans lequel j'ai ajouter ces références :

   
   {domain ex: svn.forge.cloudbees.com}
   {userName}
   {password}


    internal
    {userName}
    {password}


    snapshots
    {userName}
    {password}


    restricted
    {userName}
    {password}


    public
    {userName}
    {password}

Configurer le plugin sur un job jenkins

  1. Aller dans la configuration du job maven d'un projet sur jenkins
  2. Dans 'Environnements de Build' cocher la case 'Maven release build'
  3. Laisser les options par défaut sauf si vous devrez surcharger une valeur
  4. Sauver

Lancer la création de la release

  1. Aller sur le job jenkins configuré avec le plugin
  2. Cliquer sur 'Perform Maven Release'
  3. Changer si besoin les valeur de la release et du futur Snapshot
  4. Cliquer sur Schedule Maven Release Build
  5. La release se construit, un tag est crée et les artefacts sont déposés sur archiva (si vous utilisez archiva)