CircleCI
Ce guide explique comment integrer le client API JMeter de LoadFocus avec CircleCI pour les tests de performance automatises.
Etapes de configuration
1. Ajouter des variables d'environnement
Stockez vos identifiants API LoadFocus en tant que variables d'environnement dans CircleCI :
- Accedez a votre projet dans CircleCI
- Allez dans Project Settings > Environment Variables
- Ajoutez les variables suivantes :
LOADFOCUS_API_KEY: Votre cle API LoadFocusLOADFOCUS_TEAM_ID: Votre ID d'equipe LoadFocus
2. Configurer le workflow CircleCI
Creez ou mettez a 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 echouer le build en cas de problemes de performance
Pour faire echouer votre pipeline lorsque les seuils de performance ne sont pas atteints, modifiez l'etape "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 avancee
Tests paralleles
Pour executer plusieurs tests de performance en parallele :
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'integration CircleCI
Allocation de ressources : Assurez-vous que votre forfait CircleCI dispose de suffisamment de ressources pour executer les tests de performance, surtout s'ils sont de longue duree.
Parametres de delai d'attente : Pour les tests plus longs, ajustez le delai 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 : Executez les tests de performance uniquement sur des branches specifiques ou pour des commits specifiques :
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 echecs 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.