Configurer Jenkins pour exécuter et afficher les tests JMeter

Configurer Jenkins pour exécuter et afficher les tests JMeter

1. Vue d'ensemble

Dans cet article, nous allons configurer un pipeline de livraison continue à l'aide deJenkins etApache JMeter.

Nous nous baserons sur l'article deJMeter comme un excellent point de départ pour comprendre d'abord les bases de JMeter, car il a déjà configuré des tests de performances que nous pouvons exécuter. Et nous utiliserons la sortie de compilation de ce projet pour voir le rapport généré par le plugin JenkinsPerformance.

2. Configurer Jenkins

Tout d'abord, nous devons télécharger la dernière version stable deJenkins, accéder au dossier où se trouve notre fichier et l'exécuter à l'aide de la commandejava -jar jenkins.war.

Gardez à l'esprit que nous ne pouvons pas utiliser Jenkins sans une configuration initiale des utilisateurs.

3. Installation du plug-in de performance

Installons le pluginPerformance, qui est nécessaire pour exécuter et afficher les tests JMeter:

image

Maintenant, nous devons nous rappeler de redémarrer l'instance.

4. Exécuter des tests JMeter avec Jenkins

Maintenant, allons à la page d’accueil de Jenkins et cliquez sur "créer de nouveaux emplois", spécifiez un nom, sélectionnezFreestyle project et cliquez sur "OK".

Dans l'étape suivante, sur lesGeneralTab, nous pouvons le configurer avec ces détails généraux:

image

Ensuite, définissons l'URL du dépôt et les branches à créer:

image

Accédez maintenant auxBuildTab pour spécifier comment nous allons construire le projet. Ici, au lieu de spécifier directement la commande Maven pour construire l'ensemble du projet, nous pouvons prendre un autre moyen de mieux contrôler notre pipeline, l'objectif étant simplement de construire un module.

Sur lesExecute shell **Sub-tab, nous écrivons un script pour effectuer les actions nécessaires après le clonage du référentiel:

  • Naviguez jusqu'au sous-module souhaité

  • Nous l'avons compilé

  • Nous l'avons déployé, sachant qu'il s'agit d'un projet basé sur le printemps

  • Nous attendons que l'application soit disponible sur le port 8989

  • Et à la fin, nous spécifions simplement à la fois le chemin de notre script JMeter (situé dans le dossier de ressources du modulejmeter) à utiliser pour les tests de performances et le chemin du fichier résultant (JMeter.jtl) également dans le dossier de ressources

Voici le petit script shell correspondant:

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

Comme indiqué dans l'image suivante:

image

Une fois le projet cloné à partir de GitHub, nous l'avons compilé, ouvert sur le port 8989 et traité les tests de performance, nous devons rendre le résultat d'affichage du plug-in de performance convivial.

Nous pouvons le faire en ajoutant unPost-build Actions dédié. Nous devons fournir le fichier source des résultats et configurer l'action:

image

Nous choisissons lesStandard Mode avec les configurations suivantes:

image

FrapponsSave, dans le menu de gauche du tableau de bord Jenkins, cliquons sur le boutonBuild Now ** et attendons qu'il termine l'ensemble des opérations que nous avons configurées là-haut.

Une fois terminé, nous verrons sur la console toutes les sorties de notre projet. À la fin, nous obtiendronsFinished: SUCCESS ** ouFinished: FAILURE:

image

Allons à la zonePerformance Report ** accessible via le menu de gauche.

Nous aurons ici le rapport de toutes les versions passées, y compris la version actuelle, pour voir la différence en termes de performances:

image

Cliquons sur l’indication juste en haut du tableau pour n’avoir que le résultat de la dernière compilation que nous venons de faire:

image

Depuis le tableau de bord de notre projet, nous pouvons obtenir lesPerformance Trend, qui sont d'autres graphiques montrant les derniers résultats de builds:

image

Remarque: appliquer la même chose à unPipeline project est aussi simple que:

  1. Créez un autre projet (élément) à partir du tableau de bord et nommez-leJMeter-pipeline par exemple (General info Tab)

  2. SélectionnezPipeline comme type de projet

  3. Sur lesPipelineTab, sur la définition sélectionnezPipeline script ** et vérifiezUse Groovy Sandbox

  4. Dans la zonescript, remplissez simplement les lignes suivantes:

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"
    }
}

Ce script commence par cloner le projet, va dans le module cible, compile et exécute-le pour s'assurer que l'application est accessible àhttp://localhost:8989

Ensuite, nous exécutons des tests JMeter situés dans le dossier de ressources, enregistrons les résultats en tant que sortie de construction et, enfin, l’application est fermée.

5. Conclusion

Dans cet article rapide, nous avons mis en place un environnement de livraison continue simple pour exécuter et afficher les tests ApacheJMeter dansJenkins de deux manières; d'abord via unFreestyle project et ensuite avec unPipeline.

Comme toujours, le code source de cet article peut être trouvéover on GitHub.