CircleCI
Esta guía explica cómo integrar el Cliente API de JMeter de LoadFocus con CircleCI para pruebas de rendimiento automatizadas. --name es siempre el nombre exacto de una prueba JMeter que ya guardaste en LoadFocus.
Pasos de Configuración
Sección titulada «Pasos de Configuración»1. Agregar Variables de Entorno
Sección titulada «1. Agregar Variables de Entorno»Almacena tus credenciales de API de LoadFocus como variables de entorno en CircleCI:
- Navega a tu proyecto en CircleCI
- Ve a Project Settings > Environment Variables
- Agrega las siguientes variables:
LOADFOCUS_API_KEY: Tu clave API de LoadFocusLOADFOCUS_TEAM_ID: Tu ID de equipo de LoadFocus
2. Configurar el Flujo de Trabajo de CircleCI
Sección titulada «2. Configurar el Flujo de Trabajo de CircleCI»Crea o actualiza tu archivo .circleci/config.yml para incluir pruebas de rendimiento:
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. Fallar la Compilación por Problemas de Rendimiento
Sección titulada «3. Fallar la Compilación por Problemas de Rendimiento»El paso "Run Performance Tests" anterior ya hace fallar la compilación cuando no se cumple un umbral, porque run-test termina con el código de salida 1 y CircleCI detiene el job ante un código distinto de cero. Para mostrar antes tu propio mensaje, gestiona el fallo en la misma línea:
- 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 }Configuración Avanzada
Sección titulada «Configuración Avanzada»Pruebas en Paralelo
Sección titulada «Pruebas en Paralelo»Para ejecutar múltiples pruebas de rendimiento en paralelo:
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: | # Obtener nombre de prueba basado en el índice 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-resultsConsejos para la Integración con CircleCI
Sección titulada «Consejos para la Integración con CircleCI»-
Asignación de Recursos: Asegúrate de que tu plan de CircleCI tenga suficientes recursos para ejecutar pruebas de rendimiento, especialmente si son de larga duración.
-
Configuración de Tiempo de Espera: Para pruebas más largas, ajusta el tiempo de espera del job en CircleCI:
- run:name: Run Performance Testscommand: loadfocus-api jmeter run-test --name "Test_Name" --wait-timeout 3600no_output_timeout: 60m -
Pruebas Condicionales: Ejecuta pruebas de rendimiento solo en ramas específicas o para commits específicos:
performance_test:# Solo ejecutar si el mensaje del commit contiene [PERF-TEST]when:condition:or:- equal: [ main, << pipeline.git.branch >> ]- matches:pattern: ".*\\[PERF-TEST\\].*"value: << pipeline.git.commit.message >> -
Notificaciones: Configura notificaciones para fallos en pruebas de rendimiento:
- 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
Para más información, consulta la documentación de CircleCI y la documentación del Cliente API de LoadFocus.