to test connuously or not to code - resinfo to test – connuously – or not to code intégraon...

36
To test con)nuously or not to code Intégra)on Con)nue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture sur d’autres ou)ls Claire Mouton - CREATIS, Lyon, France claire.mouton@crea<s.insa-lyon.fr Plénière Aramis 13 avril 2017

Upload: others

Post on 06-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Totest– con)nuously–ornottocode

Intégra)onCon)nue:

Retourd’expériencesurlamiseenplaced’undashboardCDashet

ouverturesurd’autresou)ls

ClaireMouton-CREATIS,Lyon,Franceclaire.mouton@crea<s.insa-lyon.fr

PlénièreAramis13avril2017

Page 2: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Pourquoi?

2

Page 3: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Pourquoi?

3

Timeismoney!

Page 4: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quand?

4

Page 5: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quand?Intégra)onCon)nue

Testerencon)nu!

5

Page 6: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quoi?

6

Page 7: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quoi?Intégra)onCon)nue:Principe

Vérifier à chaque modification de code source que

le résultat des modifications ne produit pas de régression dans l'application développée

7

Page 8: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quoi?Intégra)onCon)nue:Prérequis

•  Partage du code source via un gestionnaire de version

•  Intégration quotidienne des modifications par les développeurs

•  Développement de tests d’intégration de l’application

8

Page 9: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quoi?Intégra)onCon)nue:Avantages

•  Le test immédiat des unités modifiées •  La prévention rapide en cas de code

incompatible ou manquant •  Les problèmes d'intégration sont détectés et

réparés de façon continue, évitant les problèmes de dernière minute

•  Une version fonctionnelle est toujours disponible pour un test, une démonstration ou une distribution

9

Page 10: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quoi?Intégra)onCon)nue:Méthodologie

Automatisation des tâches (compilation, tests unitaires, fonctionnels et d’intégration, tests de performance, validation, documentation ...) Méthodologie Agile •  des valeurs (communication, simplicité, …) •  des pratiques (petites livraisons, tests, …)

10

Page 11: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Quoi?Au-delàdel’intégra)oncon)nue

Couverture du code Vérification syntaxique Construction d’image de conteneurs et déploiement

11

Page 12: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?

12

Page 13: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Unou)ld’intégra)oncon)nue:CDash

13

Open source CDash déployé sur son propre serveur ou hébergé chez Kitware (my.cdash.org) Projet CMake (multiplateforme) / CTest Événement - commit (Continuous)

- à la demande (Experimental) - crontab (Nightly)

Compilation / Tests / Doc/ Couverture / Analyse Dynamique sur notre architecture (machine réelle, virtuelle, cluster, …) Envoi des résultats au dashboard en ligne

Page 14: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?L’exempledeCDashpourCMake

14

Page 15: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?L’exempledeCDashpourCMake

Compilation multiplateforme et Tests / Nightly https://open.cdash.org/index.php?project=CMake

15

Page 16: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?L’exempledeCDashpourCMake

Compilation multiplateforme et Tests / Continuous

16

Page 17: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?L’exempledeCDashpourCMake

Génération de la documentation

17

Page 18: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?L’exempledeCDashpourCMake

Couverture

18

Page 19: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?L’exempledeCDashpourCMake

Analyse dynamique avec

Valgrind AddressSanitizer

19

Page 20: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

20

Page 21: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

gammabeaminwaterbox. gamma-3d-Dosevisualiza)onwithvv.

21

Page 22: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

22

Images de référence récupérées depuis le serveur Midas

Page 23: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

Vue d’ensemble du Dashboard

23

Page 24: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

24

Les fichiers CMake Configuration pour la compilation du projet et Ctest

Lancement via CTest

Page 25: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

25

Build log avec détail des erreurs

Page 26: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

26

Résultat des tests

Page 27: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

27

Exemple de log des tests (1/2)

Page 28: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comment?Retourd’expérience:CDashpourGate

28

Exemple de log des tests (2/2)

Page 29: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

D’autresou<ls

29

Page 30: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

TravisCI

30

Gratuit pour projets open-source – Licence MIT (open source) Hébergé : compilation, exécution en ligne Interfacé à Github Unix / Pas d’environnement Windows Limites de la version gratuite :

Temps limité 2 threads maximum

Pas d’accès aux machines (seul le log est accessible)

Page 31: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Appveyor

31

Equivalent à Travis CI pour Windows Propriétaire

Page 32: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Gitlab-CI

32

Intégré à GitLab - fichier ".gitlab-ci.yml" à la racine de votre dépôt Open source Multi-plateforme Multi-langage Compilation en parallèle Possibilité d’utiliser des images Docker personnalisées

Page 33: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Jenkins(forkdeHudson)

33

Open source A installer sur sa propre infrastructure Interfacé à gestionnaires de versions tels que CVS, Subversion, Git Exécute des projets basés sur Apache Ant et Apache Maven aussi bien que des scripts en shell Unix ou batch Windows Solution de remplacement populaire à l'outil de référence CruiseControl

Page 34: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Strider-CD

34

Open source Intégration continue et serveur de déploiement A installer sur sa propre infrastructure Interfaçable à Github, Gitlab, Bitbucket, Node.js, Docker

Page 35: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

Comparaisonsavecd’autresou)ls

h]ps://en.wikipedia.org/wiki/Comparison_of_con)nuous_integra)on_so`wareh]ps://www.slant.co/topics/799/~best-con)nuous-integra)on-toolsh]ps://www.slant.co/topics/186/~best-hosted-con)nuous-integra)on-services

35

Page 36: To test connuously or not to code - RESINFO To test – connuously – or not to code Intégraon Connue : Retour d’expérience sur la mise en place d’un dashboard CDash et ouverture

AtelierIntégra)onCon)nueGroupeCalcul

Prêts à franchir le cap de l’automatisation de vos compilations et tests?

Inscrivez-vous du 29 au 31 mai à Paris ! http://calcul.math.cnrs.fr/spip.php?article282

Au programme : Git, Docker,

Jenkins, Gitlab CI, Travis CI

36