The jq epoch helper was discarding timezone offsets (e.g. -08:00) and
treating local time as UTC. Now parses the offset with capture() and
applies it correctly: -08:00 adds 8h, +05:30 subtracts 5h30m.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Queries .forgejo/workflows/ (or .github/workflows/) on the default
branch and only emits run_duration and last_success metrics for
workflows found there. Prevents stale deleted workflows from showing
ever-increasing staleness in the dashboard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use /repos/{r}/commits (not /git/commits) — correct Forgejo API path
- Handle timezone offsets (-08:00) in jq epoch conversion
- Use Forgejo field names: workflow_id, created/stopped, duration (ns)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New forgejo_metrics Ansible role collects repo health, CI/CD, language,
and release metrics from the Forgejo API via textfile collector. Grafana
dashboard provides at-a-glance visibility into build status, staleness,
queue depth, and repository activity across all repos.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>