Rapports et artefacts
Lors des étapes précédentes, vous avez vu que chaque tâche pouvait remonter des fichiers au serveur Jenkins. Cette fonctionnalité peut être utilisée par certains plugins pour générer automatiquement des rapports (e.g. tests unitaires, couverture de code, analyse statique). Cette partie présente l'exemple de la génération d'un rapport de tests unitaires avec le plugin xUnit, qui permet de générer des rapports depuis plusieurs outils de gestion de tests, et, de façon succincte, l'accès aux artefacts et aux autres informations des tâches par l'API de Jenkins.
Rapports
Commencez par vérifier si le plugin est installé (Administrer Jenkins → Gestion des plugins → onglet Installés). Si ce n'est pas le cas, installez-le (onglet Disponibles). Repartez ensuite de votre tâche freestyle et modifiez-là pour générer un pseudo-rapport de test : ajoutez la ligne suivante à votre script de « compilation » :
wget -O build/Test.xml https://git.unistra.fr/xstra-dev/atelier-jenkins-2017/raw/master/Test.xml
Lancez une construction, et vérifiez (par les artefacts ou le contenu de l'espace de travail) que le fichier existe. Ajoutez ensuite une étape de construction de type Process xUnit test result report, qui servira à convertir le fichier de test téléchargé, généré par CMake au format jUnit auquel Jenkins est plus habitué. Choisissez CTest comme format, entrez build/Test.xml
comme motif de fichier de test et décochez Delete temporary JUnit files. Lancez une construction, et vérifiez la présence du répertoire generatedJUnitFiles dans l'espace de travail. Ajoutez enfin une action à la suite du build de type Publier le rapport des résultats des tests JUnit, et demandez-lui de chercher les rapports dans generatedJUnitFiles/**/*.xml
. Un message d'avertissement apparaît alors ('generatedJUnitFiles/**/.xml' ne correspond à rien*) : à quoi est-il dû ? Est-il grave ?
Lancez une nouvelle construction et vérifiez sur la page principale du projet qu'un entrée Derniers résultats des tests apparait. Attention : le fichier de test venant d'un autre projet, l'intégration n'est pas parfaite.
API de Jenkins
Jenkins possède une API REST : en bas à droite de chaque page, un lien REST API permet d'accéder aux informations disponibles, en XML, JSON ou Python. Chaque action de l'API y est également documentée. Un projet permettra donc d'accéder à ses différentes constructions, une construction aux résultats des tests et des artefacts, etc. L'accès aux informations respecte bien sur la configuration de la sécurité de Jenkins.