Introduction
Les builds Jenkins sont plus faciles à interpréter lorsqu'ils publient des résultats. Les rapports de test indiquent quels tests ont réussi ou échoué, et les notifications aident l'équipe à identifier les builds nécessitant une attention particulière.
Dans ce laboratoire, vous utiliserez le tableau de bord Jenkins pour créer un job Freestyle, générer un petit rapport JUnit au format XML, le publier en tant que rapport de test Jenkins, configurer un destinataire pour les notifications par e-mail, puis exécuter un second build contenant un test en échec.
Créer un job qui génère un fichier JUnit XML
Dans cette étape, vous allez créer un job Jenkins Freestyle qui génère un fichier JUnit XML. Le format JUnit XML est un standard couramment utilisé que Jenkins peut lire, même lorsque les données de test proviennent d'un simple script shell.
Ouvrez l'interface Desktop. Firefox ouvre Jenkins automatiquement. Si ce n'est pas le cas, accédez à http://localhost:8080.
Depuis le tableau de bord Jenkins :
Cliquez sur New Item, saisissez test-report-demo, sélectionnez Freestyle project, puis cliquez sur OK.
Sur la page de configuration, faites défiler jusqu'à Build Steps, cliquez sur Add build step et sélectionnez Execute shell.
Saisissez le script shell suivant dans la zone Command :
mkdir -p reports
printf '%s\n' \
'<testsuite name="LabExSuite" tests="2" failures="0" skipped="0">' \
' <testcase classname="demo.HealthTest" name="test_home_page"/>' \
' <testcase classname="demo.HealthTest" name="test_api_status"/>' \
'</testsuite>' > reports/junit.xml
echo "Generated passing JUnit report"
Cliquez sur Save.
La page du job devrait s'ouvrir après l'enregistrement.

Exécutez cette commande dans le terminal pour enregistrer l'étape shell configurée :
docker exec jenkins sh -lc "grep -n -E 'reports/junit.xml|Generated passing JUnit report' /var/jenkins_home/jobs/test-report-demo/config.xml" | tee /home/labex/project/test-report-job-config.txt
Publier le rapport de résultats de test JUnit
Dans cette étape, vous allez ajouter une action post-build qui publie le fichier JUnit XML. Une étape de build crée des fichiers pendant la construction, tandis qu'une action post-build traite ces fichiers une fois le build terminé.
Sur la page du job test-report-demo, cliquez sur Configure.
Faites défiler jusqu'à Post-build Actions, cliquez sur Add post-build action et sélectionnez Publish JUnit test result report.
Dans le champ Test report XMLs, saisissez :
reports/junit.xml
Cliquez sur Save.

Exécutez cette commande pour enregistrer la configuration du plugin JUnit :
docker exec jenkins sh -lc "grep -n -E 'JUnitResultArchiver|<testResults>reports/junit.xml</testResults>' /var/jenkins_home/jobs/test-report-demo/config.xml" | tee /home/labex/project/junit-publisher-lines.txt
La sortie doit inclure à la fois JUnitResultArchiver et reports/junit.xml.
Exécuter un build et inspecter les résultats de test
Dans cette étape, vous allez exécuter le job et inspecter le rapport de test publié. Le premier rapport contient deux tests réussis, Jenkins devrait donc marquer le build comme réussi (successful).
Sur la page du job test-report-demo, cliquez sur Build Now.
Lorsque le build #1 apparaît dans l'historique, ouvrez-le et cliquez sur Test Result.
La page des résultats de test devrait afficher zéro échec et lister le package demo.

Exécutez cette commande dans le terminal pour enregistrer les données de résultat à des fins de vérification :
curl -fsS http://localhost:8080/job/test-report-demo/1/api/json | grep '"result":"SUCCESS"' | tee /home/labex/project/passing-test-result.txt
curl -fsS http://localhost:8080/job/test-report-demo/1/testReport/api/json | grep '"failCount":0' | tee -a /home/labex/project/passing-test-result.txt
Vous devriez voir :
"result":"SUCCESS"
"failCount":0
Ajouter un destinataire pour les notifications de build
Dans cette étape, vous allez ajouter un destinataire pour les notifications par e-mail Jenkins. Dans un contrôleur de production, Jenkins nécessiterait des paramètres SMTP pour envoyer des e-mails. Dans ce laboratoire, le concept clé à retenir est l'endroit où le job stocke l'adresse du destinataire.
Sur la page du job test-report-demo, cliquez sur Configure.
Faites défiler jusqu'à Post-build Actions, cliquez sur Add post-build action et sélectionnez E-mail Notification.
Dans le champ Recipients, saisissez :
dev-team@example.com
Cliquez sur Save.

Exécutez cette commande pour enregistrer la configuration de notification enregistrée :
docker exec jenkins sh -lc "grep -n -E 'hudson.tasks.Mailer|dev-team@example.com' /var/jenkins_home/jobs/test-report-demo/config.xml" | tee /home/labex/project/mail-notification-lines.txt
La sortie doit inclure le service de messagerie Jenkins et l'adresse du destinataire.
Provoquer l'échec d'un test et relancer le build
Dans cette étape, vous allez mettre à jour l'étape shell afin que le rapport JUnit contienne un test en échec. Jenkins marque les builds contenant des tests JUnit échoués comme UNSTABLE (instable), ce qui correspond au type de résultat qu'une notification d'équipe devrait mettre en évidence.
Sur la page du job test-report-demo, cliquez sur Configure.
Recherchez l'étape de build Execute shell. Remplacez la commande par ce rapport contenant un échec :
mkdir -p reports
printf '%s\n' \
'<testsuite name="LabExSuite" tests="2" failures="1" skipped="0">' \
' <testcase classname="demo.HealthTest" name="test_home_page"/>' \
' <testcase classname="demo.HealthTest" name="test_api_status">' \
' <failure message="API returned 500">simulated failure</failure>' \
' </testcase>' \
'</testsuite>' > reports/junit.xml
echo "Generated failing JUnit report"
Cliquez sur Save, puis sur Build Now.
Lorsque le build #2 apparaît, ouvrez-le et cliquez sur Test Result. La page devrait afficher un test en échec.

Exécutez cette commande pour enregistrer la preuve du build instable :
curl -fsS http://localhost:8080/job/test-report-demo/2/api/json | grep '"result":"UNSTABLE"' | tee /home/labex/project/unstable-test-result.txt
curl -fsS http://localhost:8080/job/test-report-demo/2/testReport/api/json | grep '"failCount":1' | tee -a /home/labex/project/unstable-test-result.txt
Vous devriez voir :
"result":"UNSTABLE"
"failCount":1
Résumé
Vous avez créé un job Jenkins Freestyle depuis le tableau de bord, généré un fichier JUnit XML, l'avez publié via une action post-build, inspecté les rapports de test réussis et échoués, et configuré un destinataire pour les notifications par e-mail pour ce job.