Skip to end of metadata
Go to start of metadata

Objectif

Déployer pas à pas deux environnements LUTECE sur la plate-forme CloudBees : l'un pour la version de développement du site, l'autre pour la version de production.

Gérer ensuite le déploiement automatisé en fonction des mises à jour des composants.

Voici les différentes étapes de ce tutoriel :

Intérêt de CloudBees

Les intérêts de cette plate-forme sont :

  • C'est un PAAS (Platform As A Service) qui met à disposition l'ensemble des éléments d'exécution pour les Webapp Java :
    • Serveur JEE : Tomcat, JBoss, ...
    • Base de données : MySQL, ...
Il n'y a donc aucun socle technique à installer, il faut juste fournir une Webapp

 

  • La plateforme CloudBees intègre un environnement d'intégration continue basé :
    • des repository de contrôle de version GIT ou SVN
    • le pilote d'intégration Jenkins

Les mécanismes de build et d'assemblage de Lutece sont directement utilisables dans CloudBees

 

Prérequis

Création du compte Cloudbees

L'inscription est gratuite et ne requiert pas l'enregistrement d'une carte banquaire.

Créer votre compte à l'adresse suivante :

https://www.cloudbees.com/signup

 

NB : Le nom Domain/Account retenu figurera dans l'URL d'accès à l'application.

https://app_name.account_name.cloudbees.net

Création du référentiel de code basé sur un repository GIT

 

Ce référentiel va contenir :

- le fichier pom.xml permettant la construction du site,

- les fichiers qui viendront surcharger au moment de l'assemblage les fichiers de la construction par défaut (ex : charge graphique, fichiers de configuration, …)

Création du repository GIT

Cliquez sur le menu « Repositories » du menu principal (bandeau).

Dans la section Code Repositories, cliquez sur le bouton « Create new code repository »

 

Connexion au repository GIT

Pour se connecter, il faut disposer d'une paire de clés (public/privée) SSH comme indiqué dans les prérequis ci dessus.En effet, l'accès au repository GIT créé suppose que vous avez enregistré votre clé publique au niveau de la plate-forme Cloudbees.

Pour cela il faut cliquer sur " Account " (dans le bandeau à droite de votre login), puis sur " Security Keys ". Il vous est alors proposé de saisir votre clé publique SSH.

 

Tester ensuite la connexion à GIT avec la commande suivante :

 

Création du projet local sous GIT

Positionnez-vous dans l'arborescence de votre système de fichiers local à l'endroit où vous souhaitez créer le répertoire racine de votre projet versionné par GIT (répertoire mysite pour notre exemple)  et lancer la commande pour cloner localement le repository :

Tester ensuite en effectuant un premier commit et un push vers le serveur.

Création de la base de données

Cliquez sur le menu « DBs » du menu principal (bandeau).

Dans la section Database à gauche, cliquez sur le bouton « Add new database ».

Saisissez ensuite les informations concernant la base de données de développement pour commencer :

 

Une fois la base créée, vous obtiendrez les informations permettant de configurer son accès (serveur, port, ...).

Répéter cette opération pour créer la base de données de production.

Création des fichiers du projet

Votre projet devra contenir au minimum les fichiers suivants :

  • Le fichier pom.xml utilisé par Maven pour construire le site
  • Les fichiers db.properties correspondant à nos deux bases de données DEV et PROD

Le répertoire racine du projet doit contenir deux sous-repertoires : src et webapp

Vous pouvez ajouter dans le répertoire webapp d'autres fichiers qui viendront surcharger ou compléter ceux qui seront assemblés lors du build.

Les fichiers classiquement surchargés concernent généralement la charte graphique (ex : footer.html, page_frameset.html, icon.png, ...)

 

Le fichier pom.xml

Ce fichier a pour caractéristiques :

  • il doit dériver du fichier projet pour les sites Lutece : lutece-site-pom
  • il doit contenir les adresses des repositories maven de Lutece : versions stables et/ou snapshots selon le souhait.
  • il doit déclarer dans les dépendences tous les plugins et modules à intégrer dans le site.

 

Les fichiers de configurations de la base de données

Ces fichiers doivent se trouver dans les répertoires suivants :

/webapp/src/conf/dev/WEB-INF/conf/db.properties

/webapp/src/conf/prod/WEB-INF/conf/db.properties

 Voici le contenu par exemple du fichier qui permettra l'accès à la base de développement :

 

Initialisation des bases données

 

La solution la plus simple pour initialiser les bases de données est de construire en local les deux webapps et de jouer les scripts de création.

Les fichiers db.properties devront être préalablement correctement configurés pour accéder aux bases distantes (hébergées chez Amazon au moment de la redaction du tutoriel)

L'accès aux bases distantes peut poser un problème si vous êtes derrière un proxy qui ne vous autorise pas le port 3306.

Pour construire en local la webapp de dev et lancer l'initialisation de sa base distante, voici les commandes

Pour la base de production, remplacer dev par prod dans la première commande.

 

Mise à jour des fichiers du projet sur GIT

Une fois que tous les fichiers du projet sont prêts, vous devez les "pousser" dans la branche du repository GIT.

Pour cela les trois commandes à exécuter :

 

Création des instances des applications

Cliquez sur le menu « Apps » du menu principal (bandeau).

Dans la section Database à gauche, cliquez sur le bouton « Add new application ».

Saisissez ensuite le nom de l'application (mysite-dev et mysite pour l'exemple) dans le formulaire ci-dessous :

Création des Jobs d'intégration continue

 

Cliquez sur le menu « Builds » du menu principal (bandeau).

Activer la mise à disposition d'une plate-forme d'intégration continue Jenkins.

Une fois la plate-forme disponible, cliquez sur « Create Job »

Il vous faut alors donner un nom : "Deploy DEV", sélectionner le type de Job : "Build Maven 2/3 project" et valider.

Vous aurez ensuite à saisir la configuration détaillée du Job.

Les seules informations à saisir sont :

  • Le type repository : GIT et l'URL de celui-ci : ssh://git@git.cloudbees.com/lutece/mysite.git 
  • Les goals et options dans la rubrique Build : clean lutece:site-assembly -Pdev -DfinalName=mysite-dev
  • Les actions à la suite du build pour lesquelles nous allons choisir Deploy Host service CloudBees RUN@cloud service mysite-dev

 

Le second Job à définir pour la production, "Deploy PROD", peut être créer par clonage du précédent.

Les seules différences sont :

  • Les goals et options dans la rubrique Build : clean lutece:site-assembly -Pprod -DfinalName=mysite-prod
  • Les actions à la suite du build pour lesquelles nous allons choisir Deploy Host service CloudBees RUN@cloud service mysite

Par ailleurs, il faut décocher l'option de lancement automatique du Job à chaque modification faite dans le repository GIT. Ce Job est à lancer manuellement lorsque les évolutions ont été validées sur la plate-forme de développement.

Voici la vue du tableau de bord de Jenkins, après création et lancement des jobs :

 

Déploiement des instances

 

Dans la configuration proposée, toute modification sur GIT lancera automatiquement un build complet de la webapp et son déploiement sur l'instance de développement à l'URL http://mysite-dev.myaccount.cloudbees.net

Si les tests sont satisfaisants, le lancement du Job "Deploy PROD" pourra se faire manuellement depuis le tableau de bord de Jenkins.

Si tout se passe bien vous devriez obtenir votre instance Lutece à l'URL http://mysite.myaccount.cloudbees.net comme ci dessous

 

Mise en place du service de messagerie

Activer le service "SendGrid Mail Server" pour votre compte a partir de l'interface Apps.

Cliquez sur Alert Settings (http://sendgrid.com/alerts) pour définire l'adresse mail de notification du service.

Initialisez votre mot de passe : https://sendgrid.com/user/forgotPassword

Cliquez sur Developer (http://sendgrid.com/developer) pour afficher les paramètre de configuration.

Ajouter, dans le répertoire WEB-INF/conf/override/ de votre profile de déploiement du sur CloudBees ou dans votre webapp, un fichier config.properties avec le éléments suivant configurés :

config.properties
Note de version

Le mode d'authentification demandé par SendGrid n'est supporté qu'a partir de la version 4.1.0 de Lutece

 

 

 

Labels
  • None