Introdução
Os builds do Jenkins tornam-se mais fáceis de compreender quando publicam resultados. Os relatórios de teste mostram quais testes passaram ou falharam, e as notificações ajudam a equipe a identificar builds que precisam de atenção.
Neste laboratório, você usará o painel do Jenkins para criar um job Freestyle, gerar um pequeno relatório JUnit XML, publicá-lo como um relatório de teste do Jenkins, configurar um destinatário para notificações por e-mail e executar um segundo build com um teste falhando.
Criar um Job que Produz JUnit XML
Nesta etapa, você criará um job Freestyle no Jenkins que escreve um arquivo JUnit XML. O JUnit XML é um formato de relatório comum que o Jenkins consegue ler, mesmo quando os dados de teste provêm de um simples script shell.
Abra a interface da Área de Trabalho. O Firefox abre o Jenkins automaticamente. Caso não abra, acesse http://localhost:8080.
No painel do Jenkins:
Clique em New Item, insira test-report-demo, selecione Freestyle project e clique em OK.
Na página de configuração, role até Build Steps, clique em Add build step e selecione Execute shell.
Insira este script shell na caixa 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"
Clique em Save.
A página do job deverá abrir após salvar.

Execute este comando no terminal para registrar a etapa de shell salva:
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 o Relatório de Resultados de Teste JUnit
Nesta etapa, você adicionará uma ação pós-build que publica o arquivo JUnit XML. Uma etapa de build cria arquivos durante a execução. Uma ação pós-build processa arquivos após a conclusão do build.
Na página do job test-report-demo, clique em Configure.
Role até Post-build Actions, clique em Add post-build action e selecione Publish JUnit test result report.
No campo Test report XMLs, insira:
reports/junit.xml
Clique em Save.

Execute este comando para registrar o publicador JUnit salvo:
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
A saída deve incluir tanto JUnitResultArchiver quanto reports/junit.xml.
Executar um Build e Inspecionar os Resultados de Teste
Nesta etapa, você executará o job e inspecionará o relatório de teste publicado. O primeiro relatório possui dois testes aprovados, portanto, o Jenkins deve marcar o build como bem-sucedido.
Na página do job test-report-demo, clique em Build Now.
Quando o build #1 aparecer no histórico de builds, abra-o e clique em Test Result.
A página de resultados de teste deve mostrar zero falhas e listar o pacote demo.

Execute este comando no terminal para salvar os mesmos dados de resultado para verificação:
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
Você deverá ver:
"result":"SUCCESS"
"failCount":0
Adicionar um Destinatário de Notificação de Build
Nesta etapa, você adicionará um destinatário de notificação por e-mail no Jenkins. Em um controlador de produção, o Jenkins precisaria de configurações SMTP antes de poder enviar e-mails. Neste laboratório, o conceito fundamental para iniciantes é onde o job armazena o destinatário da notificação.
Na página do job test-report-demo, clique em Configure.
Role até Post-build Actions, clique em Add post-build action e selecione E-mail Notification.
No campo Recipients, insira:
dev-team@example.com
Clique em Save.

Execute este comando para registrar a configuração de notificação salva:
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
A saída deve incluir o publicador de e-mail do Jenkins e o endereço do destinatário.
Fazer um Teste Falhar e Reconstruir
Nesta etapa, você atualizará a etapa de shell para que o relatório JUnit contenha um teste com falha. O Jenkins marca builds com testes JUnit falhos como UNSTABLE, que é o tipo de resultado de build que uma notificação de equipe deve destacar.
Na página do job test-report-demo, clique em Configure.
Encontre a etapa de build Execute shell. Substitua o comando por este relatório com falha:
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"
Clique em Save e, em seguida, clique em Build Now.
Quando o build #2 aparecer, abra-o e clique em Test Result. A página deve mostrar um teste com falha.

Execute este comando para salvar a evidência do build instável:
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
Você deverá ver:
"result":"UNSTABLE"
"failCount":1
Resumo
Você criou um job Freestyle no Jenkins a partir do painel, gerou um JUnit XML, publicou-o com uma ação pós-build, inspecionou relatórios de teste aprovados e falhos, e configurou um destinatário de notificação por e-mail para o job.