Releases vergleichen
Deploys aus CI/CD taggen und „hat dieser Deploy LCP verschlechtert?" in einer Query beantworten.
Du taggst jeden Deploy als Release und vergleichst die Metriken davor und danach. Der Guide zeigt API-Key, Release-Call aus CI/CD und Vergleich.
Setup-Zeit: 10–15 Minuten. Was du brauchst: authentifizierten fastmon-Account, Edit-Zugriff auf die CI/CD-Pipeline, eine Site, die schon Beacons empfängt.
1. API-Key erstellen
- Öffne in fastmon die Einstellungen deiner Organisation, dann Zugriff, und klicke Key erstellen. Ein Organisations-Key (
fmo_…) gehört der Organisation und gilt weiter, wenn die Person geht, die ihn angelegt hat. (Ein persönlicher Key unter Account → Zugriff geht auch, folgt aber deiner Rolle und deinen Mitgliedschaften.) - Hake
release:writeundanalytics:readan; mehr brauchen der Release-Call und die Vergleichs-Query unten nicht. Wähle ein Ablaufdatum. - Kopier den Wert: Er wird nur einmal angezeigt. Leg ihn im Secret-Store deines CI als
FASTMON_API_KEYab.
Eine Pipeline, die nur Releases meldet, kommt ohne die Einstellungen aus: Der CI/CD-Schnipsel auf der Application-Seite erstellt direkt dort einen release:write-Key, fragt, ob er dir oder der Organisation gehören soll, und schreibt ihn in den curl-Befehl.
Ist der Key geleakt, widerrufe ihn. Für ein frisches Secret rotierst du ihn, siehe Authentication.
2. Site-ID finden
Öffne in fastmon die Site und geh auf Einstellungen. Kopier die Site-id (UUID v7, sieht aus wie 01HZX...). Leg sie im CI als FASTMON_SITE_ID ab.
3. Release-Call zum Deploy-Job hinzufügen
Der Release-Call kommt ans Ende des Deploy-Jobs, nach erfolgreichem Deploy. Minimum-Payload ist nur version:
curl -fsS https://api.fastmon.eu/sites/$FASTMON_SITE_ID/releases \
-H "Authorization: Bearer $FASTMON_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"version\": \"$DEPLOY_VERSION\",
\"released_at\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"
}"Mit -fsS scheitert curl bei Non-2xx-Responses und spart sich den Progress-Output. Ohne released_at setzt der Server „jetzt".
GitHub Actions
- name: Tag fastmon release
if: success()
env:
FASTMON_API_KEY: ${{ secrets.FASTMON_API_KEY }}
FASTMON_SITE_ID: ${{ vars.FASTMON_SITE_ID }}
run: |
curl -fsS https://api.fastmon.eu/sites/$FASTMON_SITE_ID/releases \
-H "Authorization: Bearer $FASTMON_API_KEY" \
-H "Content-Type: application/json" \
-d "{ \"version\": \"${{ github.sha }}\" }"GitLab CI
fastmon-release:
stage: post-deploy
needs: ["deploy"]
script:
- |
curl -fsS https://api.fastmon.eu/sites/$FASTMON_SITE_ID/releases \
-H "Authorization: Bearer $FASTMON_API_KEY" \
-H "Content-Type: application/json" \
-d "{ \"version\": \"$CI_COMMIT_SHORT_SHA\" }"Vercel
Vercel führt keine beliebigen Post-Deploy-Commands im Build aus. Zwei Optionen:
- Deploy-Hook: Webhook-Receiver einrichten, der auf
deployment.succeededvon Vercel hört und mit der SHA aus dem Payload den fastmon-Endpunkt aufruft. - Edge-Function: kleine Cron-getriggerte Function, die die Vercel-API auf neue Deployments pollt und sie taggt.
4. Release-Eingang prüfen
Release-Liste der Site abfragen:
curl https://api.fastmon.eu/sites/$FASTMON_SITE_ID/releases \
-H "Authorization: Bearer $FASTMON_API_KEY"Im data-Array sollte dein neuer Release stehen, mit der übergebenen version und seinem window: von released_at bis zum nächsten Release, höchstens 14 Tage.
5. Metriken vergleichen
Auf jeder Metrik-Seite setzt Filter → Vergleichen → Release, gegen das davor beide Zeiträume, siehe Mit einem früheren Zeitraum vergleichen.
Per API schickst du das window des Releases aus der Release-Liste als time_range und das vorherige Release als compare_to:
curl https://api.fastmon.eu/organizations/$ORG_ID/analytics/query \
-H "Authorization: Bearer $FASTMON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"time_range": { "from": "2026-05-07T12:00:00Z", "to": "2026-05-08T12:00:00Z" },
"metrics": ["lcp", "inp", "cls"],
"aggregations": ["p75"],
"filters": { "site_id": "01HZX..." },
"compare_to": { "release_id": "01HZY..." }
}'Jede Zeile hat dann ein comparison mit denselben Metriken, und request.comparison_time_range nennt den verwendeten Zeitraum. Der Zeitraum des vorherigen Release beginnt bei seinem released_at, ist so lang wie time_range und endet früher, wenn das nächste Release oder jetzt davor liegt.
compare_to nimmt auch einen beliebigen Zeitraum { "from": …, "to": … } oder einen der Modi previous_period, previous_day, previous_week, previous_month. Das ältere compare_to_release_id ist veraltet, wird aber weiter bedient.
Was gut aussieht
- Jeder erfolgreiche Deploy taggt automatisch einen Release.
- Die Release-Version führt auf einen Commit zurück: Git-SHA, Tag oder Build-Nummer.
- Im CI gibt's einen Schritt, der den Deploy scheitern lässt, wenn der Release-Call hängt.
Häufige Stolperfallen
- Ein Release ohne
released_atsetzt „jetzt". Geht dein Deploy erst Minuten nach dem Job live, etwa bei Blue/Green, datier ihn zurück. - Releases hängen an einer Site. Wer in einem Monorepo drei Sites ausliefert, braucht drei Release-Calls.
- Der Vergleich richtet sich nach der Query-Länge. Eine
time_rangevon 7 Tagen vergleicht mit den ersten 7 Tagen des vorherigen Release. Für scharfe Regressionen halt sie kurz (1–24 h).
Verwandt
- Releases-Konzept: was ein Release ist.
- Analytics-API:
compare_to-Details. - Notification Rules: automatisch alarmieren bei Per-Release-Regressionen.
Beacon Inspector
Eine DevTools-Erweiterung, die fastmons RUM-Beacons beim Senden abfängt und jedes Feld, jede Lifecycle-Marke und jeden Web Vital direkt im Browser aufschlüsselt.
CSP-Verstöße an fastmon melden
Zwei Response-Header, und der Browser meldet jeden Verstoß gegen deine Content Security Policy an fastmon.