Voici, pour les projets internes de la Licence Professionnelle Conception des Solutions Décisionnelles, un exemple de configuration d'un workspace Eclipse pour gérér la qualté du portail PHP à l'aide d'un serveur Jenkins pour l'intégration continue et d'un serveur SonarQube pour l'analyse de la qualité du code.

Installation des serveurs Subversion, Jenkins et MySQL et Sonar sur le serveur physique ENS-DSIVA-0002

Déployer le serveur Subversion parallèlement au serveur web SAS BI 9.4

Déployer le serveur Nexus dans le serveur applicatif SAS BI 9.4

Selon la version de Nexus à installer il est nécessaire de mettre à jour la version de Java (par exemple, la version de Nexus 2.6.1-02, requiert Java 7 et la version de Nexus 2.11.2-06 requiert Java 8) comme cela est expliqué ici.

Pour l’installation, on va éviter de télécharger le bundle qui se trouve à l'adresse http://www.sonatype.org/nexus/go car le nexus est embarqué dans un conteneur de servlet jetty. Il suffit de télécharger directement le fichier war qui se trouve par exemple à l'adresse http://mvnrepository.com/artifact/org.sonatype.nexus/nexus-webapp. Téléchargeons la dernière version compatible JRE6/JRE7, la version 2.5.1-01.

Au préalable, il faut stopper Tomcat et copier le fichier nexus-webapp-2.5.1-01.war dans le répertoire /var/lib/tomcat7/webapps/

Il faut ensuite créer un répertoire de travail afin que Nexus puisse y déposer ses fichiers. On va donc créer un répertoire nexus dans le répertoire D:\usbgis\data\nexus qui aura pour propriétaire tomcat7.

Enfin, il est maintenant possible de relancer Tomcat. A ce moment là, un répertoire Nexus va être créé, mais Nexus ne sera pas exécuté. En effet, il est nécessaire d’apporter quelques modifications au sein du fichier de configuration. Il faut donc stopper tomcat et modifier le fichier /var/lib/tomcat7/webapps/nexus/WEB-INF/plexus.properties

#nexus-work=${user.home}/sonatype-work/nexus
nexus-work=D:/usbgis/data/nexus

Maintenant que la modification a été faite, il est possible de relancer tomcat. Cette fois-ci Nexus devrait s’exécuter comme il faut. Pour y aller, il suffit de taper dans un navigateur l’url de Nexus : http: //tomcat_host:8080/nexus Par défaut, pour se connecter à Nexus, le login/password administrateur est le suivant : admin/admin123 Maintenant, il faut ajouter un nouvel utilisateur que l’on utilisera pour faire les déploiements. Cet utilisateur est lié à Jenkins puisque c’est lui qui se chargera de faire les déploiements au sein de Nexus (cf. Figure 5). La configuration de Nexus est terminée.

Déployer le serveur Jenkins dans le serveur applicatif SAS BI 9.4

Installation et première exécution et paramétrage de la JVM de Tomcat

Tout comme pour SonarQube, nous avons choisi d’installer Jenkins sous la forme d’un fichier .war, que nous téléchargeons depuis la page d’accueil de Jenkins, et à déployer sous Tomcat par recopie dans le répertoire \UBS\serveurs\UBS-OS-GISBI-Server\tomcat\webapps.

Le serveur Apache Tomcat va alors déployer ce fichier .war dans une webapp, à laquelle nous pouvons ensuite accéder depuis notre navigateur, avec l’URL suivante http://ubsbase3:9090/jenkins/.

Bien. Allons jeter un coup d’œil à la configuration de Jenkins, depuis le menu / le lien d’administration (Administrer Jenkins).

Vous verrez s’afficher la cause de l’erreur avec un message java.lang.OutOfMemoryError: PermGen space au niveau des logs ou de la console du serveur Apache Tomcat.

Sans rentrer dans les détails, le PermGen space est l’espace mémoire réservé au stockage des classes et des informations associées.

Nous allons donc résoudre ce problème de la manière suivante:

  1. Dans le répertoire \UBS\serveurs\UBS-OS-GISBI-Server\, rechercher le fichier start-pentaho.bat.
  2. Dans ce fichier, rechercher la ligne set CATALINA_OPTS=-Xms256m -Xmx768m -XX:MaxPermSize=256m et modifiez là comme ceci :
set CATALINA_OPTS=-Xms256m -Xmx768m -XX:MaxPermSize=512m 

Redémarrer le serveur Tomcat via stop-pentaho.bat puis start-pentaho.bat

Configuration de Jenkins

Dans la page d’administration, un message m’avertit que le conteneur de servlets – c’est à dire Tomcat – n’est pas à la norme UTF8, ce qui pourrait poser problèmes avec des caractères non ASCII (comme c’est le cas en Espagne par exemple).

Nous allons donc résoudre ce problème de la manière suivante:

  1. Dans le répertoire \UBS\serveurs\UBS-OS-GISBI-Server\tomcat\conf, rechercher le fichier server.xml.
  2. Dans ce fichier, rechercher la section Connector et insérer la ligne suivante :
URIEncoding="UTF-8"

Voici à quoi cela ressemble dans mon fichier :

Redémarrer le serveur Tomcat et vérifiez que le message d’erreur a disparu de la page d’administration de Jenkins.

Depuis cette page Administration (menu Administrer Jenkins), allons voir maintenant les paramètres de configuration, en sélectionnant le premier menu de cette page (Configurar El Sistema).

La première ligne dans cette page de configuration nous indque que Jenkins s’est installé dans un répertoire C:\.jenkins. Cela ne me convient pas du tout. Je souhaite centraliser tout ce qui touche à mes analyses dans un répertoire \UBS\jenkins_repository (par exemple). Il me faut donc pour cela modifier le paramètre de localisation du repository Jenkins.

Nous devons pour cela spécifier la variable JENKINS_HOME, de la manière suivante : dans le répertoire \UBS\serveurs\UBS-OS-GISBI-Server\tomcat\conf, localiser le fichier context.xml et insérer la ligne suivante :

<Environment name="JENKINS_HOME" value="/UBS/jenkins_repository/" type="java.lang.String"/>

Choisissez bien le répertoire où vous souhaitez localiser le repository Jenkins : si vous modifiez celui par la suite, vous perdrez la configuration existante (sauf à déplacer votre repository actuel vers le nouvel emplacement) et donc tout ce que vous avez pu installer, comme par exemple le plugin SonarQube pour Jenkins.

Installer le plugin SonarQube pour Jenkins sur le serveur UBSBASE3

Commençons d’abord par lancer Jenkins, c’est-à-dire l’application web correspondante sous Tomcat (http://ubsbase3:9090/jenkins/ dans mon environnement).

Dans la page d’administration de Jenkins, activer le menu de gestion des plugins.

Dans la page suivante, sélectionner l’onglet des plugins disponibles :

Rechercher puis sélectionner le plugin SonarQube. Je vous conseille d’effectuer une recherche sur la chaîne de caractères Sonar afin de trouver plus rapidement le plugin dans cette liste particulièrement longue.

En bas de page, activer le bouton Installer sans redémarrer :

Jenkins lance l’installation et, une fois celle-ci terminée…

… , nous avertit que le plugin SonarQube a été installé. Nous pouvons revenir dans la page d’administration de Jenkins afin de sélectionner le menu de configuration, qui va nous permettre de paramétrer notre installation SonarQube.

Configuration du SonarQube Runner

Jenkins va utiliser le SonarQube Runner (que nous avons installé précédemment).

Afin de configurer celui-ci, nous retournons dans la page d’administration de Jenkins afin d’activer le menu de configuration de celui-ci.

Remarquez dans cette page la première ligne qui indique le répertoire de travail de Jenkins, que nous avons configuré précédemment.

Plus bas, Jenkins nous permet de configurer ou voire même d’installer un JDK.

Si nous vérifions dans le répertoire d’installation C:\Program Files\Java du server UBSBASE3, nous avons :

  • Un sous-répertoire jdk1.6.0_43, avec le JDK.
  • Un sous-répertoire jre6, avec la JVM qui va nous permettre d’exécuter des programmes Java.

Comme un JDK 32 bits est aussi installé, il se trouvera dans le répertoire C:Program Files (x86)\Java.

Ce n’est pas nécessaire si vous avez créer une variable JAVA_HOME avec l’indication, dans la variable PATH de la machine, du répertoire contenant les exécutables du JDK. La mise à jour de ces variables aussi être faite dans le script de lancement du serveur Apache Tomcat (\UBS\serveurs\UBS-OS-GISBI-Server\start-pentaho.bat).

set JAVA_HOME="C:\Program Files (x86)\Java\jdk1.6.0_43"
set PATH=%JAVA_HOME%/bin;%PATH%

En dessous, une section consacrée au SonarQube Runner va nous permettre de configurer celui-ci pour Jenkins. Tout d’abord, cliquer le bouton qui permet d’ajouter une instance de SonarQube Runner :

Ce qui aura pour effet d’ouvrir la section de configuration de celui-ci :

Dans cette section:

  • Décocher la check-box d’installation automatique.
  • Donner un nom à votre instance de SonarQube Runner.
  • Indiquer la localisation de celui-ci.

Et finalement, n’oubliez pas de sauvegarder vos paramètres. C’en est fini.

Configuration de SonarQube

La configuration de SonarQube dans Jenkins va suivre la même logique. Toujours dans cette même page de configuration du système Jenkins, repérez la section consacrée à SonarQube :

Comme auparavant, cliquer sur le bouton qui permet de créer une nouvelle instance de SonarQube.

Jenkins nous demande alors de saisir un nom afin d’identifier notre installation de SonarQube.

Ensuite seulement, vous pouvez cliquer le bouton Avancé… afin d’ouvrir une page qui va nous permettre d’indiquer les différents paramètres de configuration.

Ceux-ci sont les mêmes que ceux indiqués dans le fichier sonar-properties de SonarQube. Il suffit donc d’ouvrir ce fichier pour reprendre ces mêmes paramètres :

Nous indiquons donc :

  • L’URL de notre application web SonarQube :http://ubsbase3:9090/sonar/.
  • L’adresse de notre base de données :jdbc:mysql://ubsbase3:3306/sonar?useUnicode=true&characterEncoding=utf8 (ne pas faire précéder par sonar.jdbc.url=), contrairement à ce qui est montré à l'écran.
  • Le driver JDBC pour accéder à la base de données :com.mysql.jdbc.Driver.

J’ai indiqué également l'utilisateur MySQL et son password, pour accéder à la base de données Sonar. Je n’ai pas indiqué de user SonarQube pour effectuer les analyses, puisque je ne l’avais pas fait non plus lors de l’installation du SonarQube Runner.

N’oubliez pas de sauvegarder les paramètres saisis à l’aide du bouton situé en bas de page.

Configurer et déployer le serveur SonarQube dans le serveur applicatif SAS BI 9.4 basé sur Apache Tomcat 7.0.30

La première étape de cette installation va consister à télécharger la dernière version de Sonar depuis la page de download http://www.sonarsource.org/downloads/. Dans notre cas, à la date à laquelle je rédige ce billet, ce sera la version 3.7.4 (version LTS pour Long-Term Supported). Évidemment, vous pouvez installer une éventuelle version plus récente mais il n'est plus possible de créer à partir de la version 4.0 une application war pour un serveur Apache Tomcat déjà existant. Il faut avoir un serveur dédié qui se trouve être un serveur Tomcat.

Donc, pour une nouvelle installation, nous allons télécharger le fichier sonar-3.7.4.zip et le décompresser dans un répertoire \UBS\outils\sonar-3.7.4.

Dans ce répertoire, nous cherchons dans le dossier .\conf le fichier sonar.properties afin de l’éditer. Dans ce fichier, un utilisateur sonar est déjà défini avec son password :

sonar.jdbc.username: sonar
sonar.jdbc.password: sonar

Il faut changer le mot de passe en sonar.jdbc.password: s0n@r Cela correspond à l'utilisateur MySQL que nous avons créé dans la section précédente.

Nous ne voulons pas utiliser la base de données livrée par défaut avec Sonar, donc nous mettons les lignes suivantes en commentaires :

# Comment the following line to deactivate the default embedded database.
# sonar.jdbc.url: jdbc:h2:tcp://localhost:9092/sonar

Et nous recherchons la section dédiée à la configuration de MySQL afin de paramétrer notre connexion :

sonar.jdbc.url: jdbc:mysql://ens-dsiva-0002:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

Ma base de données MySQL s'appelle sonar est installée sur serveur écoutant le port 3306 (port par défaut pour MySQL), sur ma propre machine ubsbase3.ubs-bi.local. Ce sont les seuls paramètres à spécifier en fonction de votre propre environnement.

Le driver JDBC de MySQL mysql-connector-java-5.1.24.jar est déjà présent dans le répertoire \extensions\jdbc-driver\mysql de Sonar.

Dernière étape : générer le fichier sonar.war que nous utiliserons pour déployer Sonar sous Tomcat. Tout le monde sait ce qu’est un fichier .war : un fichier compressé qui va nous permettre d’installer l’application Web – le dashboard ou tableau de bord – de Sonar.

Auparavant, vous pouvez souhaiter télécharger (depuis la page Plugin Library) les plugins Sonar que vous souhaitez utiliser. Copiez les dans le répertoire de Sonar \extensions\plugins. Ce n’est pas absolument indispensable, vous pouvez le faire ensuite. J'ai installé les plugins open-source et gratuits suivants qui me permettent de gérer les langages Android, C#, flex, Groovy, javascript, PHP, python, web et XML :

  • sonar-android-plugin-0.1.jar
  • sonar-csharp-plugin-2.1.jar
  • sonar-csharp-stylecop-plugin-2.1.jar
  • sonar-dotnet-fxcop-plugin-2.1.jar
  • sonar-dotnet-gallio-plugin-2.1.jar
  • sonar-dotnet-gendarme-plugin-2.1.jar
  • sonar-dotnet-ndeps-plugin-2.1.jar
  • sonar-dotnet-plugin-2.1.jar
  • sonar-flex-plugin-2.0.1.jar
  • sonar-groovy-plugin-1.0.1.jar
  • sonar-javascript-plugin-1.6.jar
  • sonar-php-plugin-2.1.jar
  • sonar-python-plugin-1.1.jar
  • sonar-web-plugin-2.1.jar
  • sonar-xml-plugin-1.0.1.jar

Afin de construire le fichier sonar.war, il suffit de lancer le fichier build-war.bat depuis le répertoire \war. Celui-ci sera généré dans ce même répertoire.

Nous pouvons maintenant le déployer. Je me contente de le copier dans le répertoire C:\SAS\Config\Lev1\Web\WebAppServer\SASServer1_1\webapps de mon serveur SAS Web Application 9.4, puis de démarrer ce serveur Tomcat afin de créer un nouveau répertoire – une nouvelle webapp – \sonar avec le contenu du fichier .war.

La première fois que vous allez installer Sonar, celui-ci va prendre quelques minutes afin de créer son schéma de base de données dans la base de données MySQL définie auparavant. Laissez-lui le temps d’accomplir cette tâche avant de lancer la webapp Sonar.

Celle-ci est maintenant accessible depuis votre navigateur, à l’URL correspondante au répertoire de la webapp Sonar : http://ens-dsiva-0002:8080/sonar/ dans mon environnement.

Et c’en est fini de la configuration de Sonar. Tout changement de configuration ou toute mise à jour nécessite de regénérer l'application sonar.war et de la redéployer sur le serveur Tomcat.

Si vous souhaitez prendre un peu d’avance et essayer par vous-mêmes, ou si vous voulez récupérer du code exemple à tester, SonarSource fournit différents exemples depuis cette page.

Installer le serveur MySQL comme un service local dont dépend le service SAS WebAppServer 9.4

L'application Java Web Sonar nécessite la disponibilité du serveur MySQL. Aussi on va déclarer au niveau des services locaux du serveur ENS-DSIVA-0002 le service MySQL comme automatique via une invite de commandes.

sc create MySQL-5.0.45 start= auto DisplayName= "MySQL 5.0.45 for Sonar" binPath= "D:\usbgis\apps\xampplite\mysql\bin\mysqld.exe --defaults-file=D:\usbgis\apps\xampplite\mysql\bin\my.cnf MySQL-5.0.45"

On va le tester :

net start MySQL-5.0.45

net stop MySQL-5.0.45

On va compléter sa description :

sc description MySQL-5.0.45 "Used by the SAS Web Application Server 9.4 service."

Puis on va déclarer que le service du serveur applicatif SAS dépend de celui-ci.

sc qc "SAS [Config-Lev1] SASServer1_1 - WebAppServer"

On constate que le service n'a aucune dépendance pour l'instant.

On va en créer une :

sc config "SAS [Config-Lev1] SASServer1_1 - WebAppServer" depend= MySQL-5.0.45

voici les messages reçus suite à ces manipulations :

Microsoft Windows [version 6.3.9600]
(c) 2013 Microsoft Corporation. Tous droits réservés.

C:\Windows\system32>sc create MySQL-5.0.45 start= auto DisplayName= "MySQL 5.0.4
5 for Sonar" binPath= "D:\usbgis\apps\xampplite\mysql\bin\mysqld.exe --defaults-
file=D:\usbgis\apps\xampplite\mysql\bin\my.cnf MySQL-5.0.45"
[SC] CreateService réussite(s)

C:\Windows\system32>net start MySQL-5.0.45
Le service MySQL 5.0.45 for Sonar démarre.
Le service MySQL 5.0.45 for Sonar a démarré.


C:\Windows\system32>net stop MySQL-5.0.45
Le service MySQL 5.0.45 for Sonar s'arrête.
Le service MySQL 5.0.45 for Sonar a été arrêté.


C:\Windows\system32>sc description MySQL-5.0.45 "Used by the SAS Web Application
 Server 9.4 service."
[SC] ChangeServiceConfig2 réussite(s)

C:\Windows\system32>sc qc "SAS [Config-Lev1] SASServer1_1 - WebAppServer"
[SC] QueryServiceConfig réussite(s)

SERVICE_NAME: SAS [Config-Lev1] SASServer1_1 - WebAppServer
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\SAS\Config\Lev1\Web\WebAppServer\SASServer1_1\bi
n\winx86_64\wrapper.exe -s C:\SAS\Config\Lev1\Web\WebAppServer\SASServer1_1\conf
\wrapper.conf set.CATALINA_BASE=C:\SAS\Config\Lev1\Web\WebAppServer\SASServer1_1
 "set.CATALINA_HOME=C:\Program Files\SASHome\SASWebApplicationServer\9.4\\tomcat
-7.0.30.A.RELEASE" set.ARCH=winx86_64 set.INSTANCE_NAME=SASServer1_1 set.wrapper
.ntservice.id=tcruntime-C-SAS-Config-Lev1-Web-WebAppServer-SASServer1_1
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : SAS [Config-Lev1] SASServer1_1 - WebAppServer
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem

C:\Windows\system32>sc config "SAS [Config-Lev1] SASServer1_1 - WebAppServer" de
pend= MySQL-5.0.45
[SC] ChangeServiceConfig réussite(s)
C:\Windows\system32>

Utilisation

La force d'Eclipse, c'est qu'il donne la possibilité d'éditer des fichiers PHP en offrant un client Subversion et permettant de suivre les builds d'un serveur Jenkins faisant des analyse SonarQube.

Création d'un projet PHP dans Eclipse lié à Subversion

La commande File > New Project... > PHP permet de créer dans le workspace Eclipse un projet PHP.

Pour le nom du projet, autant prendre le nom du dépôt SVN.

Pour l'emplacement des sources PHP, on a le choix entre :

  • un sous-répertoire du lecteur P: comme P:/e_14_darties1/private_html, ce qui permet de tester le site avec l'URL http://www-i.univ-ubs.fr/etud/projets/e_14_darties1/ via le serveur Apache 2.2.15 / PHP 5.3.3 / MySQL 5.1.73 du serveur projetud sous linux avec pour URL de PHPMyAdmin 4.0.10 http://www-i.univ-ubs.fr/etud/mysql/ login e_14_darties1 et mode de passe de_14_darties1d.
  • un sous répertoire htdocs d'une distribution locale Apache 2.4.10 / PHP 5.4.31 / MySQL 5.5.39 comme Xampp portable win32 1.8.2-6-VC9 dans D:\eclipse-jee-juno-SR2-win64\tools\xampp\htdocs, ce qui permet de tester le site avec l'URL http://localhost avec pour URL de PHPMyAdmin 4.2.7.1 http://localhost/phpmyadmin/ .
  • un sous répertoire htdocs d'une distribution locale Apache 2.2.4 / PHP 5.2.3 / MySQL 5.0.45 comme PortableGIS 2 (Xampplite 1.6.2) dans D:\usbgis\apps\xampplite\htdocs, ce qui permet de tester le site avec l'URL http://localhost avec pour URL de PHPMyAdmin 2.10.3 http://localhost/phpmyadmin/.

Les quatre écrans suivant de l'assistant proposent un paramétrage par défaut qu'il ne convient pas de changer. On peut aussi bien cliquer sur le bouton Finish.

On va attacher un dépôt Subversion à notre projet PHP.

  • On sélectionne le projet dans l'explorateur de projet.
  • On fait un clic droit de la souris et dans le menu contextuel, on utilise la commande Team / Share project....
  • On choisi l'option SVN, disponible si on a installé le plugin SubEclipse.
  • Le workspace ne connaissant pas encore le dépôt SVN du serveur ENS-DSIVA-0002, on ne peut que choisir create a new repository location.

L'URL du serveur Subversion est : http://ens-dsiva-0002.univ-ubs.fr:90/svn.

Comme on a nommé son projet PHP de manière identique au dépôt SVN, on choisit l'option Use project name as folder name.

Il faut entrer le login et le mot de passe qui permet les modifications du dépôt si on prévoit de faire des commits. Sinon on peut mettre des identifiant en lecture seule.

Eclipse propose d'afficher en plus de celle PHP, la perspective Team Synchonizing dont la vue Synchonize permet de comparer la version dans le dépôt et la copie de travail.

Après avoir sélectionné le projet, la commande Clic Droit > Team > commit permet de déposer nos fichiers sur le dépôt SVN.

Il faut ajouter un commentaire sur les modifications que l'on va faire.

Pour l'analyse SonarQube, il faut mettre à la racine du dépôt SVN, un fichier sonar-project.properties contenant les propriétés suivantes :

# Required metadata
sonar.projectKey=fr.univ-ubs.fnuc:php-sonar-runner
sonar.projectName=PHP Fnuc project analyzed with the SonarQube Runner
sonar.projectVersion=1.0
# Comma-separated paths to directories with sources (required)
sonar.sources=phpapp
# Language
sonar.language=php
# To deactivate features related to unit tests execution and coverage
sonar.dynamicAnalysis=false
# Encoding of the source files
sonar.sourceEncoding=UTF-8

A noter que dans ce fichier on peut trouver aussi :

# path to source directories (required) 
sources=srcDir1,srcDir2 
# path to test source directories (optional) 
tests=testDir1,testDir2
# Desactivation de la vérification de phpUnit, car je ne l'utilise pas pour mes tests unitaires.
sonar.phpUnit.skip=true 

On peut mettre à la racine du dépôt le fichier application_PHP-FNUC.url qui est un raccourcis web.

[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
URL=http://www-i.univ-ubs.fr/etud/projets/p_07_forumntic/Fnuc/phpapp/
IDList=
HotKey=0
IconFile=http://localhost/favicon.ico
IconIndex=1

On peut mettre à la racine du dépôt le fichier application_Jenkins_PHP-FNUC.url qui est un raccourcis web.

[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
URL=http://ens-dsiva-0002.univ-ubs.fr/jenkins/job/PHP-FNUC/
IDList=
HotKey=0
IconFile=http://localhost/favicon.ico
IconIndex=1

On peut mettre à la racine du dépôt le fichier application_Sonar_PHP-FNUC.url qui est un raccourcis web.

[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
URL=http://ens-dsiva-0002:8080/sonar/dashboard/index/fr.univ-ubs.fnuc:php-sonar-runner
IDList=
HotKey=0
IconFile=http://localhost/favicon.ico
IconIndex=1

Le projet PHP sous éclipse ignore encore ces 3 nouveaux fichiers.

Si on appuie sur la touche F5 ou via le menu contextuel, on choisit la commande Refresh, les changements sont découverts par Eclipse

Les points d'interrogation au niveau des icônes précisent que ces 3 fichiers nouvellement apparus dans notre copie de travail subversion ne sont pas présents dans le dépôt.

On va commiter les changements dans le dépôt. Le plus simple et de choisir tout le projet, à charge pour subeclipse de déterminer les décalages. On utilise la commande Team > commit du menu contextuel.

Il faut entrer des commentaires pertinents.

On valide. Éventuellement, le serveur subversion redemande les informations de connexion.

Les 3 nouveaux fichiers ont été ajoutés au référentiel aussi leur icônes changent.

Si on poursuit le tutoriel, après configuration du serveur jenkins, un build est lancé automatiquement après un commit, et les commentaires subversion sont alors pris en compte après la fin de la construction du projet dans le portail jenkins au niveau de modifications ou changements récents après un double-clic sur son raccourci web application_Jenkins_PHP-FNUC.url soit au niveau d'Eclipse, soit au niveau de l'explorateur de fichiers.

De plus, une nouvelle analyse sonar est produite lors du build. Elle peut être visualisée par un double-clic sur le raccourci web application_Sonar_PHP-FNUC.url soit au niveau d'Eclipse, soit au niveau de l'explorateur de fichiers.

On peut remarquer la concommitence de la signature temporelle entre la dernière analyse sonar et la derniere construction par jenkins.

Création du build dans le serveur Jenkins

L'URL du serveur Jenkins est : http://ens-dsiva-0002.univ-ubs.fr/jenkins. Il faut créer un nouveau projet via le bouton Nouveau Item.

Le nom du projet reprend celui du dépôt SVN. On utilise l'option Construire un projet free-style.

On précise la description du projet.

L'URL du dépôt Subversion est : http://ens-dsiva-0002.univ-ubs.fr:90/svn/PHP-FNUC.

Dès que l'URL est entrée, le serveur Jenkins essaye de s'y connecter. Comme pour l'instant, il ne connaît pas les identifiants, la connexion échoue. Il faut cliquer sur le lien saisir les identifiants.

Le serveur Jenkins n'étant pas sécurisé, à la première connexion au serveur svn, il faut faire attention d'utiliser le login administrateur (ici mdubois) comme cela, le serveur jenkins aura accès en lecture à tous les dépôts du serveur.

Lorsque le serveur a pu valider la connexion, il va conserver les identifiants pour les utiliser pour le même serveur subversion (ens-dsiva-0002:90).

Les identifiants ont permis de passer le test de connexion.

On va demander à scruter le dépot subversion toutes les 5 minutes pour repérer un commit.

L'intérêt d'un build PHP, c'est de faire une analyse SonarQube.

Comme à la racine du dépôt SVN il y a un fichier sonar-project.properties qui sécifie tout, il n'y a rien à changer dans les paramètres proposés.

On appuie sur le bouton Sauver. Il faut lancer manuellement la construction de notre analyse avec le bouton Lancer un build.

En cas de succès, le bouton Sonar permet d'accéder au portail spécifique à l'analyse du code PHP du projet PHP-FNUC.

Le lien direct est : http://ens-dsiva-0002:8080/sonar/dashboard/index/fr.univ-ubs.fnuc:php-sonar-runner, fr.univ-ubs.fnuc:php-sonar-runner étant la valeur de la propriété sonar.projectKey contenu du fichier sonar-project.properties.

Analyse de qualité de code PHP avec SonarQube

L'URL du serveur SonarQube est : http://ens-dsiva-0002.univ-ubs.fr:8080/sonar.

Configuration du suivi des build dans Eclipse

Il faut utiliser une JVM 1.6 avec Eclipse pour que la connexion avec un serveur SonarQube 3.7.4 puisse se faire. Aussi doit-on lancer le fichier eclipse-jee-juno-SR2-win64-jre6.bat de préférence à eclipse-jee-juno-SR2-win64-jre7.bat.

Une nouvelle entrée est disponible dans les préférences d’Eclipse : Windows > Preferences > Mylyn > Builds.

On peut :

  • Rafraichir le statut des builds toutes les X minutes ou seulement lorsque la vue Build est active.
  • Changer le type de notification disponible, par défaut un changement de statut du build ouvrira une popup dans dans la fenêtre d’Eclipse.

Il suffit ensuite d’ajouter une instance Jenkins :

  • Afficher la vue Mylyn > Builds avec la commande Windows > Show View > Other....
  • On obtient l’écran suivant : Vue Builds dans Eclipse. On clique sur create a build server.
  • On sélectionne Hudson (support Jenkins).

On appuie sur le bouton No concernant la gestion des mots de passe.

L'URL du serveur Jenkins à renseigner est : http://ens-dsiva-0002.univ-ubs.fr:8080/jenkins. Le bouton Validate doit permettre d'afficher les build à surveiller. Si la JVM d'éclipse est de version 1.7, la validation ne marche pas.

Dorénavant, une fenêtre pop-up de notification de terminaison d'un nouveau build apparaîtra.

Les jobs sélectionnés sont maintenant disponible dans la vue Builds.

Un fois sélectionné le job, un clic droit permet via le menu contextuel de lancer manuellement un build depuis Eclipse via la commande Run build.

Si on se rend sur le site Jenkins, on constate bien le déclenchement du build.

A noter que le lancement d'Eclipse avec la JVM 1.7 est nécessaire si on veut développer en Python.

Comments

  1. By Michel Dubois, on July 04, 2016, at 07:10 PM
    Migration Sonar 3.7.4 vers SonarQube 5.2
    -----------------------------------------
    - Installer MySQL 5.7.11
    - Installer SonarQube Scanner 2.5
    - Mettre à jour les plugins SonarQube
    - Migrer Jenkins 1.553 vers Jenkins 1.651.3
    - Mettre à jour les plugins Jenkins
    - Créer dans SonarQube un utilisateur jenkins/password avec droit de faire des analyse, etc et lui attacher le groupe administrateur
    - Modifier le fichier sonar.properties du serveur SonarQube 5.2 : ajouter :
    "sonar.security.localUsers=admin,jenkins"
    - au niveau de la configuration système du portail Jenkins, pour l'installation SonarQube, précisez le login "jenkins" et le mot de passe "password" (sans les guillemets pour les deux).
    - au niveau du portail SonarQube, dans les paramètres SCM, mettre "Disable the SCM Sensor" a vrai.
    - Pour les projets (java sans byte code) sans Jenkins et sans SCM ajouter dans sonar-project.properties du projet "sonar.projectBaseDir=C:/Users/michel/Documents/sonar/src/" et copier les sources dans l'un de sous répertoire précisé dans sonar.sources.
    - Pour les projets (java sans byte code) avec Jenkins et sans SCM ne rien préciser dans "Chemin vers les propriétés du projet" et préciser les propriétés "sonar.sources=/java-sonar-jenkins-runner-simple".
    - Pour les projets PHP, JS, Web avec Jenkins et SCM, ajouter dans sonar-project.properties du projet
    "
    # Required metadata
    sonar.projectKey=fr.univ-ubs.fnuc:php-sonar-runner
    sonar.projectName=PHP Fnuc project analyzed with the SonarQube Runner
    sonar.projectVersion=1.0
    sonar.projectDescription=The aim of the Fnuc project is to study MVC model with Java or PHP language.

    # Comma-separated paths to directories with sources (required)
    sonar.sources=.
    sonar.exclusions=file:**/old/**, **/ajax/**,**/lib/ckeditor/**,**/lib/pfbc3.1-php5/**,**/unity.js,**/bootstrap.css,**/jquery.mobile.css,**/angular-jqm.css

    # Language
    sonar.language=php

    sonar.modules=php-module,web-module,js-module

    #Disabling or enabling external tools on demand
    php-module.sonar.phpUnit.skip=true

    # php module
    php-module.sonar.projectName=Php Module
    #php-module.sonar.language=php => inherited from the sonar.langague project property
    php-module.sonar.projectBaseDir=phpapp

    # web module
    web-module.sonar.projectName=Web Module
    web-module.sonar.language=web
    web-module.sonar.projectBaseDir=phpapp

    # js module
    js-module.sonar.projectName=Javascript Module
    js-module.sonar.language=js
    js-module.sonar.projectBaseDir=phpapp

    # To deactivate features related to unit tests execution and coverage
    sonar.dynamicAnalysis=false
    # Encoding of the source files
    sonar.sourceEncoding=UTF-8
    "

Leave a comment

All comments are reviewed before being displayed.


Name (required):

E-mail (required, will not be published):

Website:

Enter value: