CircleCI
Ce guide explique comment intégrer le client API JMeter de LoadFocus avec CircleCI pour les tests de performance automatisés. --name est toujours le nom exact d'un test JMeter que vous avez déjà enregistré dans LoadFocus.
Étapes de configuration
1. Ajouter des variables d'environnement
Stockez vos identifiants API LoadFocus en tant que variables d'environnement dans CircleCI :
- Accédez à votre projet dans CircleCI
- Allez dans Project Settings > Environment Variables
- Ajoutez les variables suivantes :
LOADFOCUS_API_KEY: Votre clé API LoadFocusLOADFOCUS_TEAM_ID: Votre ID d'équipe LoadFocus
2. Configurer le workflow CircleCI
Créez ou mettez à jour votre fichier .circleci/config.yml pour inclure les tests de performance :
version: 2.1jobs:performance_test:docker:- image: cimg/node:24.22steps:- checkout- run:name: Install LoadFocus JMeter API Clientcommand: npm install -g @loadfocus/loadfocus-api-client- run:name: Configure LoadFocus API Clientcommand: |loadfocus-api config set --apikey $LOADFOCUS_API_KEY --teamid $LOADFOCUS_TEAM_ID- run:name: Run Performance Testscommand: |# --name is the exact name of a test you saved in LoadFocusloadfocus-api jmeter run-test \--name "My_JMeter_Test" \--thresholds "avgresponse<=200,errors==0,p95<=250" \--format json > performance_results.json- store_artifacts:path: performance_results.jsondestination: performance-test-results# run-test exits with code 1 when a threshold is missed, which fails this job.# performance_results.json starts with a few progress lines before the JSON object:# keep only the JSON with: sed -n '/^{$/,$p' performance_results.json > results.jsonworkflows:version: 2build_test_deploy:jobs:- build_and_test- performance_test:requires:- build_and_test- deploy:requires:- performance_testfilters:branches:only: main
3. Faire échouer le build en cas de problèmes de performance
L'étape "Run Performance Tests" ci-dessus fait déjà échouer le build lorsqu'un seuil n'est pas atteint, car run-test se termine avec le code de sortie 1 et CircleCI arrête le job sur un code non nul. Pour afficher d'abord votre propre message, gérez l'échec sur la même ligne :
- run:name: Run Performance Testscommand: |loadfocus-api jmeter run-test \--name "My_JMeter_Test" \--thresholds "avgresponse<=200,errors==0,p95<=250" \--format json > performance_results.json || {echo "Performance test failed to meet thresholds"exit 1}
Configuration avancée
Tests parallèles
Pour exécuter plusieurs tests de performance en parallèle :
performance_tests:docker:- image: cimg/node:24.22parallelism: 3steps:- checkout- run:name: Install LoadFocus JMeter API Clientcommand: npm install -g @loadfocus/loadfocus-api-client- run:name: Configure LoadFocus API Clientcommand: |loadfocus-api config set --apikey $LOADFOCUS_API_KEY --teamid $LOADFOCUS_TEAM_ID- run:name: Run Performance Testscommand: |# Obtenir le nom du test en fonction de l'indexTESTS=("API_Test" "Frontend_Test" "Database_Test")INDEX=$(( $CIRCLE_NODE_INDEX % 3 ))TEST_NAME=${TESTS[$INDEX]}echo "Running test: $TEST_NAME"loadfocus-api jmeter run-test \--name "$TEST_NAME" \--thresholds "avgresponse<=200,errors==0,p95<=250" \--format json > "performance_results_${TEST_NAME}.json"- store_artifacts:path: performance_results_*.jsondestination: performance-test-results
Conseils pour l'intégration CircleCI
Allocation de ressources : Assurez-vous que votre forfait CircleCI dispose de suffisamment de ressources pour exécuter les tests de performance, surtout s'ils sont de longue durée.
Paramètres de délai d'attente : Pour les tests plus longs, ajustez le délai d'attente du job dans CircleCI :
- run:name: Run Performance Testscommand: loadfocus-api jmeter run-test --name "Test_Name" --wait-timeout 3600no_output_timeout: 60mTests conditionnels : Exécutez les tests de performance uniquement sur des branches spécifiques ou pour des commits spécifiques :
performance_test:# Executer uniquement si le message de commit contient [PERF-TEST]when:condition:or:- equal: [ main, << pipeline.git.branch >> ]- matches:pattern: ".*\\[PERF-TEST\\].*"value: << pipeline.git.commit.message >>Notifications : Configurez des notifications pour les échecs de tests de performance :
- run:name: Notify on Performance Test Failurecommand: |curl -X POST -H "Content-Type: application/json" \-d "{\"text\":\"Performance test failed for $CIRCLE_PROJECT_REPONAME\"}" \$SLACK_WEBHOOK_URLwhen: on_fail
Pour plus d'informations, consultez la documentation CircleCI et la documentation du client API LoadFocus.