Um poquito de Jenkins Docker + Cucumber Reports. Parte 2

Papito

Na primeira parte, aprendemos como instalar o docker e executar um container com Ubuntu Linux, e também a instalação do Jenkins. Agora vamos instalar as dependências do projeto de testes e por fim configurar um job para executar os testes e no final da execução gerar o relatório.

Esse projeto de testes, disponível no meu Github, foi especificado com Cucumber, e escrito em Ruby:

https://github.com/fernandosqa/calculadora

Vamos começar?

1. Instalando Ruby no Container

Execute o comando “docker exec -i -t jenkins_cucumber /bin/bash” para acessar o container via Bash

Se o container estiver parado você pode inicia-lo com o comando: "docker start jenkins_cucumber"

Agora vamos instalar o RVM com os seguintes passos:

apt-get install curlgpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3\curl -sSL https://get.rvm.io | bashsource /usr/local/rvm/scripts/rvmrvm install 2.3.0/etc/init.d/jenkins restart

Execute o comando “ruby -v”, se o resultado for igual o da imagem abaixo, deu bom \o/

Agora vamos dar permissão de escrita ao usuário do Jenkins, para que o mesmo possa instalar as gems. Com o seguinte comando:

"chown -R jenkins:jenkins /usr/local/rvm/gems/ruby-2.3.0"

2. Instalando Phantomjs via NPM no Container

Com o Nodejs temos o gerenciador de pacotes NPM, e esse cara facilita muito a instalação de dependências como Phantomjs. Que no caso é o que vamos precisar para rodar testes em headless.

cd ~curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.shchmod +x nodesource_setup.sh./nodesource_setup.shapt-get install nodejs

Execute o comando “node -v” e depois "npm -v", se o resultado for igual o da imagem abaixo, deu bom \o/

Agora vamos instalar o Phantomjs com o seguinte comando:

"npm install phantomjs -g"

Em seguida, execute o comando: "phantomjs -v", se aparecer a versão, que no meu caso foi 2.1.1, é porque deu tudo certo.

2. Instalando o Git no Container

Instalar Git no Ubuntu é bem sussa, execute o comando:

"apt-get install git"

4. Instalando os Plugins no Jenkins

Note que o Jenkins exibi a linguagem conforme o padrão do navegador. No meu caso está em Português.

Na home do Jenkins, clique em "Gerenciar Jenkins", em seguida, "Gerenciar Plugins".

Agora clique na aba "Disponíveis" e marque os seguintes plugins:

Cucumber reports
Rvm

Em seguida, clique em "Instalar agora e depois reiniciar". No final do download dos plugins marque o checkbox "Reinicie o Jenkins quando a instalação estiver completa e nenhum job estiver rodando" (você pode marcar esse checkbox a qualquer momento).

Agora o sistema vai reiniciar o Jenkins para efetivar a instalação dos plugins. Apos reinicialização, acesse novamente a página de plugins e veja se os mesmos foram instalados na Aba "Instalados"

5. Criando o Primeiro Job

Na home do Jenkins, clique em “Novo job”, defina o nome do Job como "CalculadoraTests", em seguida, clique na opção "Construir um projeto de software free-style".

Por fim clique em “OK” e você deve ver a seguinte página:

6. Configurando o Job para executar testes

6. 1. Definindo repositório do projeto

Agora com muito carinho vamos definir o repositório do projeto de testes.

Selecione a opção "Git", em seguida, informe a URL "https://github.com/fernandosqa/calculadora", a branch master ja vem padrão, vamos deixar assim mesmo.

Por fim, vamos clicar em Aplicar para guardarmos as configurações.

6.2. Definindo ambiente de Build (RVM)

Agora vamos definir o ambiente de build do RVM, informando a versão do Ruby que vamos usar. No nosso caso será a versão 2.3.0, porem se tiver dúvidas no bash do container digite o comando "ruby -v" .

Com o numero da versão em mãos, vamos configurar na seção Ambiente de Build do nosso Job conforme a imagem abaixo:

Marque a opção "Run the build in a RVM-managed environment" e no campo "Implementation" informe a versão do Ruby instalada no seu container.

6.3. Criando os passos do Build

Antes de prosseguirmos, vamos entender um pouco da estrutura do projeto de testes.

Assim que o Job for executado, o Jenkins irá criar uma pasta com o nome do Job (CalculadoraTests) dentro da pasta Workspace que fica no seguinte caminho do container:

/var/lib/jenkins/workspace

Quando o Jenkins fizer o Clone do projeto, a pasta ficará com a seguinte estrutura:

Para executarmos o Bundler, (comando que baixa todas as dependências do projeto) precisamos estar dentro da pasta cucumber onde temos o Gemfile (arquivo onde foram adicionadas as dependências do projeto).

Agora vamos criar três passos de Build.

Na seção Build, clique em “Adicionar passo no build” e selecione “Executar shell” (esta opção não funfa no Windows)

O primeiro para baixar as dependências do projeto e o segundo para criar o diretório onde serão guardados os reports e evidências de testes e por fim o terceiro que irá executar os testes. Defina conforme o exemplo abaixo:

O parâmetro "-p ci" é para que seja criado um report no formato JSON e que no passo pós build iremos usar para gerar o relatório de execução de testes através do Plugin Cucumber Reports. Para mais detalhes veja o arquivo "cucumber.yml" da raiz do projeto de testes.

Por fim, vamos clicar em Salvar

Na tela inicial do Jenkins teremos o nosso Job pronto para ser executado.

7. Executando Job no Jenkins

Agora vamos acessar a página de detalhe do Job, e clicar em "Construir agora".

Nesse momento o Jenkins inicia o processo de execução do build 1, veja a execução em tempo real no Histórico de builds.

Após o processamento, se o build 1 estiver na cor Azul é porque deu tudo certo \o/.

Clique no "build 1", na página de detalhe do build clique em "Saída do console". Você verá o log de resultado da execução onde temos a instalação das gems (dependências), criação do diretório de reports e execução do cucumber.

Veja que foram executados, 3 cenários de testes e 15 steps. \o/

Tudo isso em headless através da gem Poltergeist e do Phantomjs que foi instalado via NPM do Nodejs.

Na página inicial do Jenkins podemos ver um resumo da execução do Job de testes.

7. Configuração Cucumber Reports

Acesse a página de detalhes do job "CalculadoraTests", em seguida, clique em "Configurar".

Agora na seção "Ações de pós-build", selecione a opção "Cucumber reports" conforme a imagem abaixo:

No campo Report Path, informe o caminho "cucumber/reports" (diretório onde o report JSON do cucumber foi gerado). As demais configurações você pode deixar padrão.

O plugin faz a leitura do arquivo JSON e faz o parse para publicar o relatório no Jenkins. Chique né?

Recomendo dar uma olhada na documentação do plugin que por sinal é bem bacana.

Agora vamos executar um novo build do nosso Job conforme vimos no Passo 7.

Neste momento o Jenkins vai gerar um novo build conforme a imagem abaixo:

No final da execução, clique no link do build 2 para ir para a página de detalhes do build, em seguida, clique no em "Cucumber reports".

Será exibido uma página igual da imagem abaixo. Veja que lindo o relatório informando todos os dados da execução.

Clique na Feature "Calcular Salário Liquido", veja o detalhe da especificação que foi executada de forma automática. \o/

Entrando mais no detalhe do relatório, você pode ver os passos que foram executados no testes automatizados e também o screenshot da evidência de teste.

Legal né? Se quiser, você pode fazer um fork do meu projeto no github, trocar o repositório no seu Jenkins e fazer mudanças para simular bugs ao executar os testes. E ver como fica bom os reports do cucumber no Jenkins. Alem disso, depois de rodar vários builds, dê uma olhada no Trend Reports que é bem chique também.

Bom pessoal é isso. Esse container é um exemplo para que você possa estudar mais sobre Jenkins e CI também e fazer varias POCs.

Dúvidas fiquem a vontade para me mandar emails, ou falar comigo no GRUPO QA Ninjas:

Telegram: https://goo.gl/3n6WlM

ZAP ZAP: https://chat.whatsapp.com/9PIZnN2pFEq1tiBxwDPOF7

Espero ter ajudado até a próxima.

#lovedevops #docker #jenkins #qaninja #loveqa #automação de testes #ruby #cucumber

Papito

Written by

Papito

QA Lead, DevOps, Developer & Joker

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade