Configurar o Jenkins para executar e mostrar testes JMeter
1. Visão geral
Neste artigo, vamos configurar um pipeline de entrega contínua usandoJenkinseApache JMeter.
Contaremos com o artigoJMeter como um ótimo ponto de partida para primeiro entender os fundamentos do JMeter, pois ele já tem alguns testes de desempenho configurados que podemos executar. E usaremos a saída de compilação desse projeto para ver o relatório gerado pelo plugin JenkinsPerformance.
2. Configurando o Jenkins
Em primeiro lugar, precisamos baixar a última versão estável deJenkins, navegar até a pasta onde está nosso arquivo e executá-lo usando o comandojava -jar jenkins.war.
Lembre-se de que não podemos usar o Jenkins sem uma configuração inicial do usuário.
3. Instalando o plug-in de desempenho
4. Execute testes JMeter com Jenkins
Agora, vamos para a página inicial do Jenkins e clique em “criar novos empregos”, especifique um nome, selecioneFreestyle projecte clique em “OK”.
Na próxima etapa, emGeneralTab, podemos configurá-lo com estes detalhes gerais:
A seguir, vamos definir o URL do repositório e os branches para construir:
Agora vá paraBuildTab para especificar como iremos construir o projeto. Aqui, em vez de especificar diretamente o comando Maven para construir todo o projeto, podemos tomar outra maneira de controlar melhor nosso pipeline, pois a intenção é apenas construir um módulo.
EmExecute shell **Sub-tab, escrevemos um script para realizar as ações necessárias após o repositório ser clonado:
-
Navegue até o submódulo desejado
-
Nós compilamos
-
Nós o implantamos, sabendo que é um projeto baseado em botas de mola
-
Esperamos até que o aplicativo esteja disponível na porta 8989
-
E no final, nós apenas especificamos o caminho de nosso script JMeter (localizado dentro da pasta de recursos do módulojmeter) para usar para teste de desempenho e o caminho do arquivo resultante (JMeter.jtl) também na pasta de recursos
Aqui está o pequeno script de shell correspondente:
cd jmeter
./mvnw clean install -DskipTests
nohup ./mvnw spring-boot:run -Dserver.port=8989 &
while ! httping -qc1 http://localhost:8989 ; do sleep 1 ; done
jmeter -Jjmeter.save.saveservice.output_format=xml
-n -t src/main/resources/JMeter.jmx
-l src/main/resources/JMeter.jtl
Conforme mostrado na imagem a seguir:
Depois que o projeto foi clonado no GitHub, nós o compilamos, abrimos na porta 8989 e processamos os testes de desempenho, precisamos fazer com que o plug-in de desempenho mostre o resultado de uma maneira amigável.
Podemos fazer isso adicionandoPost-build Actions dedicado. Precisamos fornecer o arquivo de origem dos resultados e configurar a ação:
EscolhemosStandard Mode com as configurações subsequentes:
Vamos clicar emSave, no menu esquerdo do painel do Jenkins, clicar no botãoBuild Now ** e esperar que termine o conjunto de operações que configuramos lá.
Depois que terminar, veremos no console todas as saídas do nosso projeto. No final, obteremosFinished: SUCCESS ** ouFinished: FAILURE:
Vamos para a áreaPerformance Report ** acessível através do menu do lado esquerdo.
Aqui, teremos o relatório de todas as construções anteriores, incluindo a atual, para ver a diferença em termos de desempenho:
Vamos clicar na indicação logo acima da tabela para ter apenas o resultado da última construção que acabamos de fazer:
No painel de nosso projeto, podemos obter osPerformance Trend, que são outros gráficos que mostram os resultados das últimas compilações:
Nota: Aplicar a mesma coisa a umPipeline project também é simples como:
-
Crie outro projeto (item) a partir do painel e nomeie-oJMeter-pipeline, por exemplo (General info Tab)
-
SelecionePipeline como tipo de projeto
-
EmPipelineTab, na definição, selecionePipeline script ** e marqueUse Groovy Sandbox
-
Na áreascript basta preencher as seguintes linhas:
node {
stage 'Build, Test and Package'
git 'https://github.com/eugenp/tutorials.git'
dir('jmeter') {
sh "./mvnw clean install -DskipTests"
sh 'nohup ./mvnw spring-boot:run -Dserver.port=8989 &'
sh "while ! httping -qc1
http://localhost:8989 ; do sleep 1 ; done"
sh "jmeter -Jjmeter.save.saveservice.output_format=xml
-n -t src/main/resources/JMeter.jmx
-l src/main/resources/JMeter.jtl"
step([$class: 'ArtifactArchiver', artifacts: 'JMeter.jtl'])
sh "pid=\$(lsof -i:8989 -t); kill -TERM \$pid || kill -KILL \$pid"
}
}
Este script começa clonando o projeto, vai no módulo de destino, compila e executa para garantir que o aplicativo esteja acessível emhttp://localhost:8989
Em seguida, executamos os testes do JMeter localizados na pasta de recursos, salvamos os resultados como saída da compilação e, finalmente, o aplicativo é fechado.
5. Conclusão
Neste artigo rápido, estabelecemos um ambiente simples de entrega contínua para executar e mostrar os testesJMeter do Apache emJenkins de duas maneiras; primeiro por meio de umFreestyle projecte segundo com umPipeline.
Como sempre, o código-fonte deste artigo pode ser encontradoover on GitHub.