Add Grafana deploy annotations to all CD workflows

Posts an annotation to Grafana after each successful deploy, tagged
with "deploy" and the service name. Annotations appear as vertical
markers on dashboards, making it easy to correlate deploys with
metric changes.

Uses GRAFANA_SERVICE_TOKEN from SOPS secrets — must be added via
sops infrastructure/secrets.infra.env. Gracefully skips if the
token is not configured.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-03-29 19:44:15 +02:00
parent f6b89a2b7e
commit 6c482238e8
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
3 changed files with 30 additions and 0 deletions

View file

@ -110,3 +110,13 @@ jobs:
# Clean up
docker image prune -af
docker compose ps
# Annotate deploy in Grafana
GRAFANA_TOKEN=$(grep GRAFANA_SERVICE_TOKEN app.env | cut -d= -f2-)
if [ -n "$GRAFANA_TOKEN" ]; then
docker compose exec -T grafana wget -q -O /dev/null \
--header="Authorization: Bearer $GRAFANA_TOKEN" \
--header="Content-Type: application/json" \
--post-data='{"text":"Deploy '${{ github.sha }}'","tags":["deploy","apps"]}' \
http://localhost:3000/api/annotations || true
fi

View file

@ -64,3 +64,13 @@ jobs:
docker pull ghcr.io/trails-cool/brouter:latest
docker compose up -d brouter
docker image prune -af
# Annotate deploy in Grafana
GRAFANA_TOKEN=$(grep GRAFANA_SERVICE_TOKEN .env | cut -d= -f2- 2>/dev/null)
if [ -n "$GRAFANA_TOKEN" ]; then
docker compose exec -T grafana wget -q -O /dev/null \
--header="Authorization: Bearer $GRAFANA_TOKEN" \
--header="Content-Type: application/json" \
--post-data='{"text":"Deploy brouter ${{ github.sha }}","tags":["deploy","brouter"]}' \
http://localhost:3000/api/annotations || true
fi

View file

@ -85,3 +85,13 @@ jobs:
fi
docker compose ps
# Annotate deploy in Grafana
GRAFANA_TOKEN=$(grep GRAFANA_SERVICE_TOKEN .env | cut -d= -f2-)
if [ -n "$GRAFANA_TOKEN" ]; then
docker compose exec -T grafana wget -q -O /dev/null \
--header="Authorization: Bearer $GRAFANA_TOKEN" \
--header="Content-Type: application/json" \
--post-data='{"text":"Deploy infra ${{ github.sha }}","tags":["deploy","infra"]}' \
http://localhost:3000/api/annotations || true
fi