Introducción
Las compilaciones de Jenkins son más fáciles de entender cuando publican resultados. Los informes de prueba muestran qué pruebas pasaron o fallaron, y las notificaciones ayudan al equipo a identificar las compilaciones que requieren atención.
En este laboratorio, utilizará el panel de control de Jenkins para crear un trabajo de tipo Freestyle, generar un pequeño informe JUnit XML, publicarlo como un informe de prueba de Jenkins, configurar un destinatario para las notificaciones por correo electrónico y ejecutar una segunda compilación con una prueba fallida.
Crear un trabajo que genere JUnit XML
En este paso, creará un trabajo Freestyle de Jenkins que escriba un archivo JUnit XML. JUnit XML es un formato de informe común que Jenkins puede leer incluso cuando los datos de prueba provienen de un simple script de shell.
Abra la interfaz de escritorio. Firefox abrirá Jenkins automáticamente. Si no es así, acceda a http://localhost:8080.
Desde el panel de control de Jenkins:
Haga clic en New Item, ingrese test-report-demo, seleccione Freestyle project y luego haga clic en OK.
En la página de configuración, desplácese hasta Build Steps, haga clic en Add build step y seleccione Execute shell.
Ingrese este script de shell en el cuadro 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"
Haga clic en Save.
La página del trabajo debería abrirse después de guardar.

Ejecute este comando en la terminal para registrar el paso de shell guardado:
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
Publicar el informe de resultados de pruebas JUnit
En este paso, agregará una acción posterior a la compilación (post-build action) que publique el archivo JUnit XML. Un paso de compilación crea archivos durante el proceso, mientras que una acción posterior a la compilación procesa los archivos una vez que la compilación finaliza.
En la página del trabajo test-report-demo, haga clic en Configure.
Desplácese hasta Post-build Actions, haga clic en Add post-build action y seleccione Publish JUnit test result report.
En el campo Test report XMLs, ingrese:
reports/junit.xml
Haga clic en Save.

Ejecute este comando para registrar el publicador JUnit guardado:
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 salida debería incluir tanto JUnitResultArchiver como reports/junit.xml.
Ejecutar una compilación e inspeccionar los resultados de las pruebas
En este paso, ejecutará el trabajo e inspeccionará el informe de prueba publicado. El primer informe tiene dos pruebas que pasan, por lo que Jenkins debería marcar la compilación como exitosa.
En la página del trabajo test-report-demo, haga clic en Build Now.
Cuando aparezca la compilación #1 en el historial, ábrala y haga clic en Test Result.
La página de resultados de la prueba debería mostrar cero fallos y listar el paquete demo.

Ejecute este comando en la terminal para guardar los mismos datos de resultados para su verificación:
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
Debería ver:
"result":"SUCCESS"
"failCount":0
Agregar un destinatario para las notificaciones de compilación
En este paso, agregará un destinatario para las notificaciones por correo electrónico de Jenkins. En un controlador de producción, Jenkins necesitaría configuraciones SMTP antes de poder enviar correos. En este laboratorio, el concepto fundamental para principiantes es dónde almacena el trabajo al destinatario de la notificación.
En la página del trabajo test-report-demo, haga clic en Configure.
Desplácese hasta Post-build Actions, haga clic en Add post-build action y seleccione E-mail Notification.
En el campo Recipients, ingrese:
dev-team@example.com
Haga clic en Save.

Ejecute este comando para registrar la configuración de notificación guardada:
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 salida debería incluir el publicador de correo de Jenkins y la dirección del destinatario.
Hacer que una prueba falle y volver a compilar
En este paso, actualizará el paso de shell para que el informe JUnit contenga una prueba fallida. Jenkins marca las compilaciones con pruebas JUnit fallidas como UNSTABLE, que es el tipo de resultado de compilación que una notificación de equipo debería resaltar.
En la página del trabajo test-report-demo, haga clic en Configure.
Busque el paso de compilación Execute shell. Reemplace el comando con este informe que contiene un fallo:
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"
Haga clic en Save y luego en Build Now.
Cuando aparezca la compilación #2, ábrala y haga clic en Test Result. La página debería mostrar una prueba fallida.

Ejecute este comando para guardar la evidencia de la compilación inestable:
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
Debería ver:
"result":"UNSTABLE"
"failCount":1
Resumen
Ha creado un trabajo Freestyle de Jenkins desde el panel de control, generado un archivo JUnit XML, lo ha publicado mediante una acción posterior a la compilación, ha inspeccionado informes de prueba exitosos y fallidos, y ha configurado un destinatario de notificaciones por correo electrónico para el trabajo.