CircleCI
Ce guide explique comment intégrer le client API JMeter de LoadFocus avec CircleCI pour les tests de performance automatisés.
É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:16.13steps:- 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_KEYloadfocus-api config set teamid $LOADFOCUS_TEAM_ID- run:name: Run Performance Testscommand: |loadfocus-api jmeter run-test \--name "CircleCI_${CIRCLE_PROJECT_REPONAME}_${CIRCLE_BRANCH}" \--thresholds "avgresponse<=200,errors==0,p95<=250" \--format json > performance_results.json- store_artifacts:path: performance_results.jsondestination: performance-test-resultsworkflows: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
Pour faire échouer votre pipeline lorsque les seuils de performance ne sont pas atteints, modifiez l'étape "Run Performance Tests" :
- run:name: Run Performance Testscommand: |loadfocus-api jmeter run-test \--name "CircleCI_${CIRCLE_PROJECT_REPONAME}_${CIRCLE_BRANCH}" \--thresholds "avgresponse<=200,errors==0,p95<=250" \--format json > performance_results.json# Verifier le code de sortie - la commande se terminera avec le code 1 si les seuils ne sont pas atteintsif [ $? -ne 0 ]; thenecho "Performance test failed to meet thresholds"exit 1fi
Configuration avancée
Tests parallèles
Pour exécuter plusieurs tests de performance en parallèle :
performance_tests:docker:- image: cimg/node:16.13parallelism: 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_KEYloadfocus-api config set 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" --waitTimeout 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: |if [ $? -ne 0 ]; thencurl -X POST -H "Content-Type: application/json" \-d '{"text":"Performance test failed for $CIRCLE_PROJECT_REPONAME"}' \$SLACK_WEBHOOK_URLfiwhen: on_fail
Pour plus d'informations, consultez la documentation CircleCI et la documentation du client API LoadFocus.