mirror of https://github.com/grafana/grafana.git
134 lines
5.2 KiB
YAML
134 lines
5.2 KiB
YAML
name: Frontend performance tests
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 * * * *" # Run hourly
|
|
workflow_dispatch: # Allow manual triggering
|
|
|
|
jobs:
|
|
performance-tests:
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
runs-on: ubuntu-x64-large
|
|
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v5
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- id: get-secrets
|
|
uses: grafana/shared-workflows/actions/get-vault-secrets@62722333225a1fae03ae27a63d638f9bc2176edb #get-vault-secrets-v1.2.0
|
|
with:
|
|
repo_secrets: |
|
|
PROMETHEUS_URL=frontend_perf_tests:prometheus_push_url
|
|
PROMETHEUS_USER=frontend_perf_tests:prometheus_user
|
|
PROMETHEUS_TOKEN=frontend_perf_tests:prometheus_token
|
|
FSPERFBASELINE_USERNAME=frontend_perf_tests:fsperfbaseline_username
|
|
FSPERFBASELINE_PASSWORD=frontend_perf_tests:fsperfbaseline_password
|
|
FSPERF_USERNAME=frontend_perf_tests:fsperf_username
|
|
FSPERF_PASSWORD=frontend_perf_tests:fsperf_password
|
|
|
|
- name: Authenticate Docker
|
|
uses: grafana/shared-workflows/actions/login-to-gar@main
|
|
id: login-to-gar
|
|
with:
|
|
registry: 'us-docker.pkg.dev'
|
|
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
|
|
- name: Yarn install
|
|
run: yarn install --immutable
|
|
env:
|
|
PUPPETEER_SKIP_DOWNLOAD: true
|
|
CYPRESS_INSTALL_BINARY: 0
|
|
|
|
- name: Install Playwright browsers
|
|
run: yarn playwright install chromium --with-deps
|
|
|
|
- name: Run Playwright tests (fsperfbaseline)
|
|
id: pw-fsperfbaseline
|
|
continue-on-error: true
|
|
env:
|
|
PLAYWRIGHT_JSON_OUTPUT_NAME: ./fsperfbaseline-pw-results.json
|
|
METRICS_OUTPUT_PATH: ./fsperfbaseline-metrics.txt
|
|
GRAFANA_URL: https://fsperfbaseline.grafana-dev.net
|
|
GRAFANA_ADMIN_USER: ${{ env.FSPERFBASELINE_USERNAME }}
|
|
GRAFANA_ADMIN_PASSWORD: ${{ env.FSPERFBASELINE_PASSWORD }}
|
|
run: yarn e2e:playwright --grep @performance --reporter json
|
|
|
|
- name: Run Playwright tests (fsperf)
|
|
id: pw-fsperf
|
|
continue-on-error: true
|
|
env:
|
|
PLAYWRIGHT_JSON_OUTPUT_NAME: ./fsperf-pw-results.json
|
|
METRICS_OUTPUT_PATH: ./fsperf-metrics.txt
|
|
GRAFANA_URL: https://fsperf.grafana-dev.net
|
|
GRAFANA_ADMIN_USER: ${{ env.FSPERF_USERNAME }}
|
|
GRAFANA_ADMIN_PASSWORD: ${{ env.FSPERF_PASSWORD }}
|
|
run: yarn e2e:playwright --grep @performance --reporter json
|
|
|
|
- name: Bench report (fsperfbaseline)
|
|
id: bench-fsperfbaseline
|
|
if: always()
|
|
continue-on-error: true
|
|
run: |
|
|
docker run \
|
|
--rm \
|
|
--volume="./fsperfbaseline-pw-results.json:/pw-results.json" \
|
|
--volume="./fsperfbaseline-metrics.txt:/metrics.txt" \
|
|
-e PROMETHEUS_URL="$PROMETHEUS_URL" \
|
|
-e PROMETHEUS_USER="$PROMETHEUS_USER" \
|
|
-e PROMETHEUS_PASSWORD="$PROMETHEUS_TOKEN" \
|
|
us-docker.pkg.dev/grafanalabs-global/docker-grafana-bench-prod/grafana-bench:v0.6.1 report \
|
|
--grafana-url "http://fsperfbaseline.grafana-dev.net" \
|
|
--test-suite-name "FrontendPerfTests" \
|
|
--report-input playwright \
|
|
--report-output log \
|
|
--prometheus-metrics \
|
|
--run-metrics-file "/metrics.txt" \
|
|
--log-level DEBUG \
|
|
/pw-results.json
|
|
|
|
- name: Bench report (fsperf)
|
|
id: bench-fsperf
|
|
if: always()
|
|
continue-on-error: true
|
|
run: |
|
|
docker run \
|
|
--rm \
|
|
--volume="./fsperf-pw-results.json:/pw-results.json" \
|
|
--volume="./fsperf-metrics.txt:/metrics.txt" \
|
|
-e PROMETHEUS_URL="$PROMETHEUS_URL" \
|
|
-e PROMETHEUS_USER="$PROMETHEUS_USER" \
|
|
-e PROMETHEUS_PASSWORD="$PROMETHEUS_TOKEN" \
|
|
us-docker.pkg.dev/grafanalabs-global/docker-grafana-bench-prod/grafana-bench:v0.6.1 report \
|
|
--grafana-url "http://fsperf.grafana-dev.net" \
|
|
--test-suite-name "FrontendPerfTests" \
|
|
--report-input playwright \
|
|
--report-output log \
|
|
--prometheus-metrics \
|
|
--run-metrics-file "/metrics.txt" \
|
|
--log-level DEBUG \
|
|
/pw-results.json
|
|
|
|
- name: Check status
|
|
env:
|
|
FSPERF_PW_OUTCOME: ${{ steps.pw-fsperf.outcome }}
|
|
FSPERF_PW_BASELINE_OUTCOME: ${{ steps.pw-fsperfbaseline.outcome }}
|
|
FSPERF_BENCH_OUTCOME: ${{ steps.bench-fsperf.outcome }}
|
|
FSPERF_BENCH_BASELINE_OUTCOME: ${{ steps.bench-fsperfbaseline.outcome }}
|
|
|
|
run: |
|
|
echo "FSPERF_PW_OUTCOME: $FSPERF_PW_OUTCOME"
|
|
echo "FSPERF_PW_BASELINE_OUTCOME: $FSPERF_PW_BASELINE_OUTCOME"
|
|
echo "FSPERF_BENCH_OUTCOME: $FSPERF_BENCH_OUTCOME"
|
|
echo "FSPERF_BENCH_BASELINE_OUTCOME: $FSPERF_BENCH_BASELINE_OUTCOME"
|
|
|
|
if [[ "$FSPERF_PW_OUTCOME" != "success" || "$FSPERF_PW_BASELINE_OUTCOME" != "success" || "$FSPERF_BENCH_OUTCOME" != "success" || "$FSPERF_BENCH_BASELINE_OUTCOME" != "success" ]]; then
|
|
echo "One or more test steps failed."
|
|
exit 1
|
|
fi
|