Transcript
Page 1: Jenkins - Les jeudis de la découverte

2 5 J U I N 2 0 1 5

J E N K I N S :I N T É G R AT I O N C O N T I N U E ,P O U R Q U O I FA I R E

Page 2: Jenkins - Les jeudis de la découverte

INTRODUCT ION

T O U T L E M O N D E E N P A R L E ,M A I S …

Page 3: Jenkins - Les jeudis de la découverte

AVANT JENKINS

Page 4: Jenkins - Les jeudis de la découverte

APRES JENKINS

Page 5: Jenkins - Les jeudis de la découverte

Qu'est-ce que Jenkins ?

•Écrit en JAVA, initialement développé en 2008•Actuellement 1057 plugins•N'embarque aucune librairie•Alternative à CruiseControl, Travis, Bamboo

Intégration continue :

Développement « normal » :

Page 6: Jenkins - Les jeudis de la découverte

Qu'est-ce que Jenkins ?

•Un outil de monitoring de développement

Page 7: Jenkins - Les jeudis de la découverte

Qu'est-ce que Jenkins ?

• Un ordonnanceur de taches automatisables

• Objectif ?- Tester rapidement et automatiquement les

évolutions/corrections de l'application- Améliorer la qualité du code produit- Automatiser les tâches qui peuvent l'être

(test, déploiements etc.)- Minimiser les régressions

Page 8: Jenkins - Les jeudis de la découverte

Qu'est-ce que Jenkins ne fait pas?

• Le café

• Traiter les Jiras à votre place

• Ecrire les tests à votre place

• Relire le code des autres à votre place

Page 9: Jenkins - Les jeudis de la découverte

Qu'est-ce que Jenkins fait ?

• Uniquement ce que vous lui direz de faire

• Execution de commande

• Enrichissement de Jenkins grace à une banque de plugin

• Exploitation de données générées par des librairies système

• Dashboard des métriques qualitatives de développement

Page 10: Jenkins - Les jeudis de la découverte

Processus d'intégration continue

Page 11: Jenkins - Les jeudis de la découverte

Présentation de l'interface

• Préliminaire : installation des librairies système

• Gestion des droits/utilisateurs

• Gestion des plugins

• Présentation d'un projet php intégré dans Jenkins (test, documentation, déploiement continu)

Page 12: Jenkins - Les jeudis de la découverte

DU CONCRET

E N F I N U N E D E M O

Page 13: Jenkins - Les jeudis de la découverte

Configuration

• Template php• La source : le code• La fréquence de build• Les possibilités : pre/post build• Les plugins• Le core de la build (ant/build.xml)

• Pour aller plus loin: les builds paramétrables

Page 14: Jenkins - Les jeudis de la découverte

Stratégie de Tests

PHPUnit • Quoi tester ?• Les tests unitaires• Les tests fonctionnels (Selenium plugin pour Firefox)• Analyse et code coverage

Page 15: Jenkins - Les jeudis de la découverte

Déploiement continu

• Déploiement sur une plateforme en fonction du résultat de la build

• But recherché :- Une plateforme de test à jour- Automatisation du déploiement et des

commandes (assetic, cache, esi...)- Minimiser les actions humaines sources

d'incertitude voire d'erreurs- Internaliser les process au sein du projet

Page 16: Jenkins - Les jeudis de la découverte

Feed Back

Le bon :- Amélioration de la qualité du code produit- Informations pertinentes sur le code produit- Assurance via les tests- Génération de la documentation du projet

durant les builds- Déploiement automatisés et systématique en

cas de succés de la build

Le mauvais :- Non indépendance des données utilisées- Dépendance à l'architecture réseau existante

Page 17: Jenkins - Les jeudis de la découverte

Pour aller plus loin

• Des tests plus évolués (Behat/Selenium)

• Des tests de performance intégrés (BlackFire)

• Plus d'infos avec Insight (Sensio)

• Des application intégrées au sein d'une VM

• Plugger Jenkins avec Jira

Page 18: Jenkins - Les jeudis de la découverte

Et J enk ins au Mob i le

T O U T L E M O N D E E N P A R L E ,M A I S …

Page 19: Jenkins - Les jeudis de la découverte

A rc h i t e c t u re

Page 20: Jenkins - Les jeudis de la découverte

E t a p e 1 - C o m p i l a t i o n

1 - Lancement des Builds

2 - Détecter les problèmes de compilation.

Page 21: Jenkins - Les jeudis de la découverte

E t a p e 2 - A n a l y s e

Qualité de code et Sonar. Principales fonctionnalités :

- Mesures qualitatives : couverture et taux de réussite

des tests, complexité du code, respect des règles de

codage...

- Mesures quantitatives : nombre de classes,

duplication de code, etc.

- Historiques des statistiques

- Visualisation du code source, surlignant les

violations des règles de codage qui s'y trouvent.

- Identification des points faibles d'un projet.

Page 22: Jenkins - Les jeudis de la découverte

E t a p e 2 - A n a l y s e

Statistique basique :

Page 23: Jenkins - Les jeudis de la découverte

E t a p e 2 - A n a l y s e

Duplications de code et complexités :

Page 24: Jenkins - Les jeudis de la découverte

E t a p e 2 - A n a l y s e

Violations et issues :

Page 25: Jenkins - Les jeudis de la découverte

E t a p e 3 – C o m p i l a t i o n m u l t i p l e

Utilisation des « Flavor » Android pour compiler

plusieurs Apk : Configuration d’un Apk Google_play

Configuration d’un Apk pub_test

Compilation jenkins de deux Apk

Page 26: Jenkins - Les jeudis de la découverte

E t a p e 4 – A u t o m a t i s a t i o n d e s t e s t s

Utilisation du plugin « Monkey test » :

Page 27: Jenkins - Les jeudis de la découverte

E t a p e 5 – D é p l o i e m e n t

Utilisation du plugin « FTP publisher plugin » :

Page 28: Jenkins - Les jeudis de la découverte

POUR ALLERPLUS LO IN

C L I Q U E - M O I F O R T

Page 29: Jenkins - Les jeudis de la découverte

Q U E L Q U E S L I E N S• Jenkins

– Présentation globale : lien– Continuous integration jenkins : lien– Plugin list

• Sonar– Qualité de code et Sonar : lien– Sonar « Do Great Code »: lien– Contrôler la qualité de ses projets avec Sonar : lien

• Monkey test– Monkey runner and Monkey testing : lien

• PHPUnit / PHPMD• Template PHP & Tutorial

Page 30: Jenkins - Les jeudis de la découverte

Q U E S T I O N S ?

Page 31: Jenkins - Les jeudis de la découverte

M E RC I D E VO T R E ATT E N T I O N

P R O C H A I N E É D I T I O N :

V I D E O S :E N C O D A G E / M O N E T I S A T I O N

9 J U I L L E T 2 0 1 5