Nexus

1. Présentation

Nexus est une plateforme de gestion de dépôts, permettant d'héberger des artéfacts. Ces artéfacts sont des composants, générés par exemple au build d'un projet, et déposés ensuite sur Nexus grâce à l'outil Maven. Cet outil a une forte dépendance envers Maven. L'intérêt de Nexus est de pouvoir y partager des artéfacts avec les autres développeurs d'un projet, voir avec toute une communauté.

2. Plugin intégration continue SourceSup

L'outil Nexus trouve sa place dans le processus d'intégration continue, en récupérant les artéfacts générés lors du build d'un projet sous Jenkins. Il a donc été choisi de placer Nexus dans le même plugin que Jenkins et Sonar.

Le plugin se compose de plusieurs onglets.

  • La page d'accueil, donne des informations générales sur l'utilisation du plugin, et indique si le projet a des dépôts associés sur Nexus.
  • La page “administration Nexus” permet à un administrateur du projet SourceSup de créer deux dépôts sur Nexus, un pour les “snapshots”, un pour les “releases”.
  • Un onglet “Nexus” qui permet d'afficher l'interface de Nexus dans une IFrame.

2.1. Activation

Ce plugin s'active comme tous les autres dans la partie “Administration” d'un projet. Il suffit de cocher la case “plugin Intégration continue” et de valider le formulaire pour que le plugin soit accessible aux membres du projet.

2.2. Création des dépôts Nexus

Afin de pouvoir utiliser Nexus pour y déposer des artéfacts, un des administrateurs du projet SourceSup doit créer les dépôts. Pour cela, celui-ci doit se rendre sur l'onglet “Administration Nexus” du plugin d'intégration continue. Un bouton “créer dépôts” permet de lancer leur création.

Les droits des membres du projet SourceSup sont automatiquement positionnés sur ces dépôts. Un administrateur de projet SourceSup sera aussi administrateur sur les dépôts Nexus.

2.3. Création d'un compte utilisateur Nexus

Les membres de la forge n'ont pas besoin de se créer un compte utilisateur sur Nexus, celui-ci est créer automatiquement à la création du compte utilisateur SourceSup. Une vérification de l'existence du compte Nexus est aussi effectuée lors de la synchronisation des rôles, si celui-ci n'existe pas, il est créé.

2.4. Synchronisation des droits des utilisateurs

Durant la vie d'un projet SourceSup, de nouveaux utilisateurs vont être ajoutés au projet, d'autres vont le quitter. Il est donc important d'accorder les bons rôles à ces nouveaux utilisateurs sur les différents outils que le projet utilise.

La synchronisation des rôles utilisateurs est accessible dans l'onglet “administration” du projet SourceSup, dans la partie “rôles et permissions”. la synchronisation est lancée par le bouton “synchroniser utilisateurs”. Celle-ci vérifie l'existence des comptes utilisateurs sur les différents outils, notamment Nexus, et positionne le bon rôle.

2.5. Suppression des dépôts Nexus

La suppression des dépôts est accessible sur l'onglet “Administration Nexus” du plugin d'intégration continue. Si les dépôts ont été créés, un administrateur du projet SourceSup pourra en demander la suppression en cliquant sur le bouton “supprimer les dépôts”.

Une fois valider, la suppression est irréversible, les données sur Nexus seront perdues. Il est toutefois possible de recréer des dépôts neufs par la suite.

3. Nexus

3.1. Authentification

Si l'utilisateur est authentifié sur SourceSup, il le sera aussi lors de son accès à Nexus. Son compte Nexus étant créé automatiquement, l'utilisateur n'a donc pas à se soucier de la gestion de compte ni d'authentification. Ces notions sont transparentes afin de faciliter l'accès à Nexus.

3.2. Dépôt

Un dépôt Nexus peut se définir comme un dossier où sont stockés des collections de binaires et d'artéfacts logiciels. Ces éléments pouvant être récupérés lors du build d'un projet. Il existe plusieurs type de dépôts :

  • Hosted : les dépôts créés par les utilisateurs
  • proxy : dépôts dont le serveur Nexus est seulement un relais
  • virtual : transformation d'un dépôt Maven1 en Maven2
  • group : un regroupement de dépôts sous une même URL

Les dépôts que le plugin SourceSup va créer sur Nexus seront des dépôts Hosted, deux seront créés pour chaque projet SourceSup, un dépôt pour les releases, un pour les snapshots.

Release

Une release dans le contexte de Maven est une version fixe d'un projet. Elle représente le but qui était fixé au début du développement, c'est une version livrable du logicielle. Si de nouveaux développements viennent se rajouter à cette version, alors le projet change de version, et une nouvelle release sera générée à la fin des développements.

Snapshot

Une version snapshot est une version en cours de développement, toutes les fonctionnalités n'étant pas terminées. Il pourra y avoir plusieurs snapshots pour une même version d'un projet.

3.3. Déposer un artéfact

La page d'accueil du plugin Intégration continue de SourceSup présente, Si le projet à des dépôts Nexus rattachés, le code XML permettant de déployer un artéfact sur Nexus en utilisant l'outil Maven.

Pour déployer avec Maven, le fichier pom.xml du projet doit contenir les instructions pour cibler le dépôt sur Nexus :

<distributionManagement>
    <repository>
      <id>sourcesup</id>
      <url>http://sourcesup.renater.fr/nexus/content/repositories/nom_projet-releases</url>
    </repository>
    <snapshotRepository>
      <id>sourcesup</id>
      <url>http://sourcesup.renater.fr/nexus/content/repositories/nom_projet-snapshots</url>
    </snapshotRepository>
  </distributionManagement>

Deux façons de procéder sont possible :

  • depuis SourceSup :

Il faut se créer un job sur Jenkins depuis le plugin d'intégration continue. Dans la configuration de ce job, ajouter une action Maven de haut niveau :

mvn deploy

Pour que Jenkins soit autorisé a publier, il faut ajouter le fichier de configuration “MySettings” à l'étape de build maven.

Soit dans le bloc “Invoquer les cibles Maven de haut niveau” » Avancé » Settings file > provided settings.xml et choisir Provided setting : MySettings.

Les prochaines exécutions du job effectueront un déploiement sur les dépôts Nexus.

  • depuis une machine autre que SourceSup :

Le déploiement peut se faire depuis une machine de l'utilisateur, mais pour se faire, celui-ci doit avoir Maven installé, ainsi que paramétrer le fichier settings.xml de Maven avec :

<servers>
    <server>
      <id>nom_du_projet</id>
      <username>email_utilisateur</username>
      <password>mot_de_pass</password>
    </server>
  </servers>

Ensuite lancer en ligne de commande, au niveau du pom.xml dans le système de fichier :

mvn deploy

A la fin de l'exécution de cette commande, les dépôts Nexus devraient contenir le ou les éléments à déployer.

Chaque artifact présent dans un dépôt Nexus est défini par un bout de code XML qui permet de l'inclure en dépendance au niveau d'un fichier pom.xml, et ainsi le télécharger automatiquement.