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 :

  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:16.13
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
loadfocus-api config set teamid $LOADFOCUS_TEAM_ID
- run:
name: Run Performance Tests
command: |
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.json
destination: performance-test-results
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

Pour faire échouer votre pipeline lorsque les seuils de performance ne sont pas atteints, modifiez l'étape "Run Performance Tests" :

- run:
name: Run Performance Tests
command: |
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 atteints
if [ $? -ne 0 ]; then
echo "Performance test failed to meet thresholds"
exit 1
fi

Configuration avancée

Tests parallèles

Pour exécuter plusieurs tests de performance en parallèle :

performance_tests:
docker:
- image: cimg/node:16.13
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
loadfocus-api config set 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" --waitTimeout 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: |
    if [ $? -ne 0 ]; then
    curl -X POST -H "Content-Type: application/json" \
    -d '{"text":"Performance test failed for $CIRCLE_PROJECT_REPONAME"}' \
    $SLACK_WEBHOOK_URL
    fi
    when: on_fail

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