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 :

  1. Accédez à votre projet dans CircleCI
  2. Allez dans Project Settings > Environment Variables
  3. Ajoutez les variables suivantes :
    • LOADFOCUS_API_KEY : Votre clé API LoadFocus
    • LOADFOCUS_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.1
jobs:
performance_test:
docker:
- image: cimg/node:24.22
steps:
- checkout
- run:
name: Install LoadFocus JMeter API Client
command: npm install -g @loadfocus/loadfocus-api-client
- run:
name: Configure LoadFocus API Client
command: |
loadfocus-api config set --apikey $LOADFOCUS_API_KEY --teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
# --name is the exact name of a test you saved in LoadFocus
loadfocus-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.json
destination: 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.json
workflows:
version: 2
build_test_deploy:
jobs:
- build_and_test
- performance_test:
requires:
- build_and_test
- deploy:
requires:
- performance_test
filters:
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 Tests
command: |
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.22
parallelism: 3
steps:
- checkout
- run:
name: Install LoadFocus JMeter API Client
command: npm install -g @loadfocus/loadfocus-api-client
- run:
name: Configure LoadFocus API Client
command: |
loadfocus-api config set --apikey $LOADFOCUS_API_KEY --teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
# Obtenir le nom du test en fonction de l'index
TESTS=("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_*.json
destination: performance-test-results

Conseils pour l'intégration CircleCI

  1. 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.

  2. 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 Tests
    command: loadfocus-api jmeter run-test --name "Test_Name" --wait-timeout 3600
    no_output_timeout: 60m
  3. Tests 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 >>
  4. Notifications : Configurez des notifications pour les échecs de tests de performance :

    - run:
    name: Notify on Performance Test Failure
    command: |
    curl -X POST -H "Content-Type: application/json" \
    -d "{\"text\":\"Performance test failed for $CIRCLE_PROJECT_REPONAME\"}" \
    $SLACK_WEBHOOK_URL
    when: on_fail

Pour plus d'informations, consultez la documentation CircleCI et la documentation du client API LoadFocus.