CircleCI
Diese Anleitung erklärt, wie Sie den LoadFocus JMeter API Client mit CircleCI für automatisierte Leistungstests integrieren. --name ist immer der exakte Name eines JMeter-Tests, den Sie bereits in LoadFocus gespeichert haben.
Einrichtungsschritte
Abschnitt betitelt „Einrichtungsschritte“1. Umgebungsvariablen hinzufügen
Abschnitt betitelt „1. Umgebungsvariablen hinzufügen“Speichern Sie Ihre LoadFocus API-Zugangsdaten als Umgebungsvariablen in CircleCI:
- Navigieren Sie zu Ihrem Projekt in CircleCI
- Gehen Sie zu Project Settings > Environment Variables
- Fügen Sie folgende Variablen hinzu:
LOADFOCUS_API_KEY: Ihr LoadFocus API-SchlüsselLOADFOCUS_TEAM_ID: Ihre LoadFocus Team-ID
2. CircleCI-Workflow konfigurieren
Abschnitt betitelt „2. CircleCI-Workflow konfigurieren“Erstellen oder aktualisieren Sie Ihre .circleci/config.yml-Datei, um Leistungstests einzuschließen:
version: 2.1jobs: 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.jsonworkflows: version: 2 build_test_deploy: jobs: - build_and_test - performance_test: requires: - build_and_test - deploy: requires: - performance_test filters: branches: only: main3. Build bei Leistungsproblemen fehlschlagen lassen
Abschnitt betitelt „3. Build bei Leistungsproblemen fehlschlagen lassen“Der obige Schritt "Run Performance Tests" lässt den Build bereits fehlschlagen, wenn ein Schwellenwert verfehlt wird, denn run-test beendet sich mit Exit-Code 1 und CircleCI stoppt den Job bei einem Exit-Code ungleich null. Wenn Sie zuvor eine eigene Meldung ausgeben möchten, behandeln Sie den Fehler in derselben Zeile:
- 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 }Erweiterte Konfiguration
Abschnitt betitelt „Erweiterte Konfiguration“Parallele Tests
Abschnitt betitelt „Parallele Tests“Für die parallele Ausführung mehrerer Leistungstests:
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: | # Get test name based on 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-resultsTipps für die CircleCI-Integration
Abschnitt betitelt „Tipps für die CircleCI-Integration“-
Ressourcenzuweisung: Stellen Sie sicher, dass Ihr CircleCI-Plan ausreichende Ressourcen für die Ausführung von Leistungstests hat, insbesondere bei lang laufenden Tests.
-
Timeout-Einstellungen: Passen Sie für längere Tests den Job-Timeout in CircleCI an:
- run:name: Run Performance Testscommand: loadfocus-api jmeter run-test --name "Test_Name" --wait-timeout 3600no_output_timeout: 60m -
Bedingte Tests: Führen Sie Leistungstests nur auf bestimmten Branches oder für bestimmte Commits aus:
performance_test:# Only run if commit message contains [PERF-TEST]when:condition:or:- equal: [ main, << pipeline.git.branch >> ]- matches:pattern: ".*\\[PERF-TEST\\].*"value: << pipeline.git.commit.message >> -
Benachrichtigungen: Richten Sie Benachrichtigungen für Leistungstestfehler ein:
- 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
Weitere Informationen finden Sie in der CircleCI-Dokumentation und der LoadFocus API Client-Dokumentation.