CircleCI
Ten przewodnik wyjasnia, jak zintegrowac klienta API JMeter LoadFocus z CircleCI w celu automatycznego testowania wydajnosci.
Kroki konfiguracji
1. Dodaj zmienne srodowiskowe
Przechowuj dane uwierzytelniajace API LoadFocus jako zmienne srodowiskowe w CircleCI:
- Przejdz do swojego projektu w CircleCI
- Przejdz do Project Settings > Environment Variables
- Dodaj nastepujace zmienne:
LOADFOCUS_API_KEY: Twoj klucz API LoadFocusLOADFOCUS_TEAM_ID: ID Twojego zespolu LoadFocus
2. Skonfiguruj workflow CircleCI
Utworz lub zaktualizuj plik .circleci/config.yml, aby uwzglednic testowanie wydajnosci:
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. Niepowodzenie budowania przy problemach z wydajnoscia
Aby potok zakonczyl sie niepowodzeniem, gdy progi wydajnosci nie sa spelnione, zmodyfikuj krok "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# Sprawdz kod wyjscia - polecenie zakonczy sie kodem 1, jesli progi nie sa spelnioneif [ $? -ne 0 ]; thenecho "Performance test failed to meet thresholds"exit 1fi
Zaawansowana konfiguracja
Testowanie rownolegle
Aby uruchamiac wiele testow wydajnosci rownolegle:
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: |# Pobierz nazwe testu na podstawie indeksuTESTS=("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
Wskazowki dotyczace integracji z CircleCI
Przydzial zasobow: Upewnij sie, ze plan CircleCI ma wystarczajace zasoby do uruchamiania testow wydajnosci, szczegolnie jesli sa dlugotrwale.
Ustawienia timeout: Dla dluzszych testow dostosuj timeout zadania w CircleCI:
- run:name: Run Performance Testscommand: loadfocus-api jmeter run-test --name "Test_Name" --waitTimeout 3600no_output_timeout: 60mTestowanie warunkowe: Uruchamiaj testy wydajnosci tylko na okreslonych galeziach lub dla okreslonych commitow:
performance_test:# Uruchom tylko jesli komunikat commita zawiera [PERF-TEST]when:condition:or:- equal: [ main, << pipeline.git.branch >> ]- matches:pattern: ".*\\[PERF-TEST\\].*"value: << pipeline.git.commit.message >>Powiadomienia: Skonfiguruj powiadomienia o niepowodzeniach testow wydajnosci:
- 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
Aby uzyskac wiecej informacji, zapoznaj sie z dokumentacja CircleCI i dokumentacja klienta API LoadFocus.