Releases
Versionierter Marker auf einer Site. Der Mechanismus für „hat dieser Deploy die Performance verschlechtert?"
Ein Release ist ein benannter Zeitpunkt auf einer Site, meistens ein Deploy. Damit lässt sich „ist LCP gestiegen, nachdem wir v2.4.1 ausgerollt haben?" per API-Call beantworten, statt sich durch Charts zu klicken.
Warum das wichtig ist
Performance-Regressionen hängen fast immer an einem Deploy. Ohne Release-Marker musst du dir merken, wann was live ging, und dann manuell vergleichen. Mit Markern macht die Analytics-API den Vorher-Nachher-Vergleich in einem einzigen Request.
Wann du sie anfasst
- Bei jedem Deploy. Sauberster Weg: ein
POST /sites/{id}/releasesaus der CI/CD nach erfolgreichem Deploy. - Wenn du eine Regression untersuchst. Auf der LCP- oder TTFB-Seite zeigt Vergleichen → Release, gegen das davor ein Release neben dem vorherigen.
- Bei einem Rollback. Auch den als Release taggen; du willst beide Übergänge im Chart sehen.
Wenn du keine Releases taggst, ist nichts kaputt. Das Dashboard funktioniert auch ohne. Dir entgeht nur die Deploy-Korrelation als Abkürzung.
Was auf einem Release steht
| Feld | Typ | Hinweise |
|---|---|---|
id | UUID v7 | Wird in Analytics-Queries als compare_to: { "release_id": … } verwendet. |
site_id | UUID v7 | Die zugehörige Site. |
version | string | Pflicht. Freiform (v2.4.1, 2026-05-07, git:abcdef0). |
released_at | timestamp | Optional. Wann der Deploy live ging. Default „jetzt", wenn weggelassen. |
window | Zeitraum | Nur lesbar. Von released_at bis zum nächsten Release, höchstens 14 Tage. |
Mehr ist da nicht. Releases sind mit Absicht minimal; wir wollen Korrelation, keine Deploy-Datenbank bauen.
Aus CI/CD taggen
Zuverlässigste Form: ein Schritt am Ende deines Deploy-Jobs:
curl https://api.fastmon.eu/sites/$FASTMON_SITE_ID/releases \
-H "Authorization: Bearer fm_$FASTMON_TOKEN" \
-H "Content-Type: application/json" \
-d "{ \"version\": \"$DEPLOY_VERSION\", \"released_at\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" }"Nimm, was dein CI als Deploy-Version führt: Git-SHA, Tag, Build-Nummer. Egal was, bleib dabei. Sonst zerlegt sich später die Sortierung.
Vercel
Deploy-Hook-Command. Die VERCEL_GIT_COMMIT_SHA-Env-Var ist automatisch befüllt.
GitHub Actions
Letzter Schritt im Deploy-Job, mit ${{ github.sha }} oder ${{ github.ref_name }} als Version.
GitLab CI
Eine release-Stage nach der Deploy-Stage, mit $CI_COMMIT_SHA oder $CI_COMMIT_TAG.
Releases vergleichen
Schick das window eines Release als time_range und das vorherige Release als compare_to: { "release_id": … }. Jede Zeile im Ergebnis hat dann ein comparison mit denselben Metriken. Schritte und Beispiel stehen unter Releases vergleichen.
Häufige Szenarien
Continuous Deploys
Tagg jeden Deploy, die Menge ist kein Problem. Die Auswahl unter Vergleichen listet die Releases der letzten 90 Tage, neueste zuerst, ältere erreichst du per ID.
Lang laufende Release-Branches
Tagge in dem Moment, in dem die neue Version wirklich Traffic abbekommt: beim Flippen des Feature-Flags, beim Umschalten des Canary, beim Umstellen des Load-Balancers. Nicht „Deploy ist durch, gesehen hat's aber noch keiner".
Rollbacks
Den Rollback als eigenen Release taggen, gerne mit einer Version wie rollback-v2.4.0. Im Dashboard sollen alle drei Übergänge sichtbar sein: der kaputte Release live, die Regression und der Rollback, der die Metriken wieder einfängt.
Häufige Überraschungen
released_atzählt mehr alsid. Sortiert wird nachreleased_at. Wer rückdatiert, riskiert, dass die Reihenfolge später komisch aussieht.- Releases sind pro Site. In einem Monorepo, das mehrere Sites ausliefert, musst du jede einzeln taggen, auch wenn der Version-String identisch ist.
- Ein gelöschter Release lässt Vergleiche damit scheitern. Der Endpunkt antwortet mit
404. Schon gerenderte Metriken bleiben unberührt.
Verwandt
- Sites: Releases liegen unter einer Site.
- Analytics-API:
compare_to. - Releases vergleichen: Schritt-für-Schritt-Guide, um CI/CD anzubinden.