Une fois l’ensemble des éléments nécessaires à nos tests fonctionnels ( Installation des éléments nécessaires aux tests fonctionnels ) en place, passons à la partie suivante.
L’installation et la configuration de jenkins pour l’exécution des tests fonctionnels.

Installation de jenkins

Pour installer jenkins saisissez les commandes suivantes

wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Il faut ensuite le lancer jenkins via la commande suivante

sudo service jenkins start

Jenkins est ensuite accessible sur le port 8080 de votre serveur via l’url : http://ip-de-votre-serveur:8080

Configuration et sécurisation de Jenkins

Pour commencer mettez à jour les plugins de jenkins via les liens :
– Administrer Jenkins
– Gestion des plugins
– Dans l’onglet mises à jour sélectionner tout les plugins à mettre à jour
– Cliquer sur “Télécharger maintenant et installer après redémarrage”
Gestion des plugin Jenkins

Sécuriser Jenkins :

Par défaut jenkins est accessible en accès complet et sans authentification, nous allons donc mettre en place des restrictions.
– Cliquer sur Administrer jenkins
– Configurer la sécurité globale
– Cocher “Activer la sécurité”

Dans le contrôle d’accès cocher ” Base de données des utilisateurs de Jenkins ”
puis Autoriser les utilisateurs à s’inscrire ( sans cela impossible de créer un compte )
Pour les autorisations laisser pour l’instant à “Tout le monde a accès à toutes les fonctionnalités ”

Configurer sécurité globale jenkins

Sauvegarder la configuration.
Vous pouvez ensuite cliquer sur le nouveau lien “Créer un compte” en haut à droite.
Créer votre compte puis retourner dans la gestion de la sécurité globale

Dans le cas ou vous souhaitez un seul utilisateur, décocher la case “Autoriser les utilisateurs à s’inscrire”
Puis dans les autorisation cocher “Les utilisateurs connectés peuvent tout faire”
A présent seul votre utilisateur pourra gérer jenkins

Note :
Cette sécurisation n’est à mon sens pas suffisante, car les utilisateurs non identifiés pourront toujours visualiser des données en se connectant sur votre serveur.
C’est pourquoi nous verrons dans un prochain article, comment mettre en place une solution de reverse proxy pour filter l’accès à jenkins.

Configuration d’un projet de test

Pour  vérifier que tout fonctionne bien, nous allons créer un nouveau projet que nous appellerons “test sample”
Cliquer sur “Nouveau item” dans le menu de gauche.

Saisissez le nom et la description de votre projet.
Dans les options avancées définissez un emplacement spécifique pour votre projet ( dans lequel votre utilisateur à les droits )
Par exemple

/home/user/jenkins/sample_test/

Rendez-vous dans ce dossier en ssh et clonez le projet github : https://github.com/nenes25/phpunit_selenium_sample.git
via la commande

git clone https://github.com/nenes25/phpunit_selenium_sample.git

Dans la configuration du projet ,

ajoutez une étape au build “Exécuter un script shell”
Avec la commande suivante :

cd phpunit_selenium_sample
phpunit --configuration phpunit.xml

Ajouter une étape action après le build “Publier les résultats des test Junit”
Avec le fichier des rapport de test “phpunit_selenium_sample/results.xml”

Sauvegarder votre projet et lancer une build

Celle-ci devrait être en échec ( ce qui est normal car il y’a volontairement une erreur dans les tests )
Vous pouvez consulter ses détails :

Jenkins résultats build

Cliquer sur “Console Output” pour visualiser le résultat de votre build, et si  le résultat est similaire au code ci-dessous , c’est que tout est bien en place 🙂

Démarré par l utilisateur anonymous
Building in workspace /home/einternet/jenkins/sample_test
[sample_test] $ /bin/sh -xe /tmp/hudson4434273508195668633.sh
+ cd phpunit_selenium_sample
+ phpunit --configuration phpunit.xml
PHPUnit 4.5.0 by Sebastian Bergmann and contributors.
Configuration read from /home/einternet/jenkins/sample_test/phpunit_selenium_sample/phpunit.xml
..F
Time: 19.92 seconds, Memory: 5.25Mb
There was 1 failure:
1) SeleniumTest::testTitleKo
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'Wrong Title'
+'Google'
/home/user/jenkins/sample_test/phpunit_selenium_sample/SeleniumTest.php:28
FAILURES!
Tests: 3, Assertions: 7, Failures: 1.
Build step 'Exécuter un script shell' marked build as failure
Enregistrement des résultats des tests
Finished: FAILURE

A vous de jouez pour mettre ce fonctionnement en place sur votre projet 🙂