parse-results
Reads benchmark output from files or workflow logs. Auto-detects Go, Rust, Hyperfine, pytest-benchmark, or OTLP format. Normalizes to OTLP JSON.
pipeline layer
GitHub Actions that extract benchmark data from logs or files, stash run artifacts to a data branch, aggregate history into indexes and time-series, and serve it all through GitHub's CDN. No backend. No server. Just Git.
Reads benchmark output from files or workflow logs. Auto-detects Go, Rust, Hyperfine, pytest-benchmark, or OTLP format. Normalizes to OTLP JSON.
Glob-expands result files, merges monitor telemetry, commits to the data branch with retry logic (up to 5 attempts on conflict).
Reads all run artifacts. Builds index.json, per-metric series files, ref/PR views, and Shields.io badge endpoints.
Collects stars, forks, contributors, issues, PRs, releases, workflow success %, and language breakdown as OTLP metrics.
Discovers completed workflow runs for scheduled benchmark ingestion — daily nightly benchmarks, weekly rollups.
One-off lightweight metric emission without a full OTLP SDK. One CLI call to benchkit-emit.
name: benchmark-pipeline
on: [workflow_dispatch]
permissions:
contents: write
actions: read
jobs:
run-benchmarks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: go test ./... -bench=. | tee bench.txt
- uses: strawgate/o11ykit/octo11y/actions/parse-results@main-dist
with:
mode: file
results: bench.txt
format: go
github-token: ${{ github.token }}
- uses: strawgate/o11ykit/octo11y/actions/aggregate@main-dist
with:
github-token: ${{ github.token }}
A clean data branch with structured artifacts, served through GitHub's CDN: