Publicação de Relatórios de Teste e Notificações de Build

Beginner

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.

Jenkins test report job

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.

Jenkins JUnit publisher configuration

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.

Jenkins passing JUnit test results

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.

Jenkins email notification configuration

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.

Jenkins unstable JUnit test results

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.