Import de rapports de couverture de code par Jacoco

Themis analyse les rapports produits par Jacoco uniquement au format XML.

Préparation de la source dans Themis

Les rapports de couverture de code produits sont associés à un de vos dépôts de code. Vous devez indiquer à votre source Themis que les données liées à la couverture de code proviendront de rapports externes. 

Pour cela, rendez-vous dans la partie Administration, puis Projets et identifiez la Source concernée. Ajoutez ensuite deux plugins respectivement pour les pratiques Couverture de code et Test-First Development, en indiquant Import de rapports de couverture de code depuis des fichiers externes. Pour rappel, l'ajout d'un plugin se fait en ouvrant la liste des plugins de la source, puis en cliquant sur Ajout un plugin.

Il n'y a pas besoin ici de préciser qu'il s'agit d'un rapport Jacoco, cela se fera au moment de l'envoi des fichiers.

Envoi de rapports avec le plugin Jenkins

Pré-requis : Lorsque vos tests unitaires automatisés sont exécutés dans Themis, un ou plusieurs rapports Jacoco sont produits.

Dans Jenkins, ajoutez une étape dans la partie Actions à la suite du build, en cliquant sur la liste déroulante Ajouter une action après le build. Sélectionnez Send report files to Themis.

Sélectionnez l'instance de Themis et indiquez la clé de la source associée au dépôt de code en cours d'analyse dans Jenkins.

Dans la section Report Files, sélectionnez pour Type la valeur Jacoco. Puis dans Path, indiquez une ou plusieurs expressions (séparées par des virgules) permettant d'accéder aux fichiers XML produits par Jacoco.

Par exemple, si vous utilisez Maven + Jacoco, votre projet a probablement l'architecture suivante après exécution des tests :

pom.xml
module1
------- pom.xml
------- target/site/jacoco/jacoco.xml
module2
------- pom.xml
------- target/site/jacoco/jacoco.xml

Dans cet exemple, vous avez 2 modules Maven dans votre projet. L'expression à indiquer sera la suivante : **/target/**/jacoco.xml

Envoi de rapports via l'API REST

Si vous n'utilisez pas Jenkins, ou ne souhaitez pas utiliser le plugin Jenkins, il est possible d'utiliser l'API de Themis pour synchroniser les rapports de couverture Jacoco. Voici un exemple de script BASH que vous pouvez implémenter dans un autre langage si vous le souhaitez (les variables au début sont à adapter dans votre contexte) :

#!/bin/bash

#TOCHANGE THEMIS_URL="http://mythemis.com" SOURCE_KEY="da4e11f4-5489-4b2a-a028-20d071b1c671" API_KEY="NWJjZWQ3ZmNhYTJhYzkwMWRmNGZhYTYx" JACOCO_REPORT_FILE="jacoco.xml" CURRENT_COMMIT=$(git rev-parse HEAD) #Current GIT commit
#For SVN : $(svn info --show-item last-changed-revision) CURRENT_DATE=$(date +%s)"000" WORKSPACE=$(pwd) #the root directory of the source code repository REPORT_ARCHIVE="themis_report.zip" #First of all, create a directory with all Jacoco reports REPORT_DIR=$(mktemp -d -p /tmp) find . -name $JACOCO_REPORT_FILE -exec cp --parents \{\} $REPORT_DIR \; if [ -e $REPORT_ARCHIVE ];then echo "Remove existing archive" rm $REPORT_ARCHIVE else echo "File "$REPORT_ARCHIVE" does not exist" fi #Create archive to send to Themis zip -r $REPORT_ARCHIVE $REPORT_DIR curl -i \ -H "Content-Type: multipart/form-data" \ -H "Accept: application/json,application/zip" \ -H "themis-api-key:$API_KEY" \ -X POST \ -F 'metadata={ "executionDate" : "'$CURRENT_DATE'", "dataType" : "jacoco", "commit" : "'$CURRENT_COMMIT'", "dataWorkspace" : "'$WORKSPACE'"};type=application/json' \ -F "archive=@"$REPORT_ARCHIVE";type=application/zip" \ $THEMIS_URL/api/reportFiles/$SOURCE_KEY rm -rf $REPORT_DIR
rm $REPORT_ARCHIVE
Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 0

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.