|
|
|
# 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](https://plugins.jenkins.io/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 » :
|
|
|
|
|
|
|
|
```shell
|
|
|
|
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](https://cmake.org/) au format [jUnit](http://junit.org/) 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](https://fr.wikipedia.org/wiki/Representational_state_transfer) : en bas à droite de chaque page, un lien *REST API* permet d'accéder aux informations disponibles, en XML, JSON ou Python. 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é](http://localhost:8080/configureSecurity/) de Jenkins. |