Skip to content

Guides

How to export CI traces with OpenTelemetry

CI timing data lives in a separate tool from the rest of your observability.

6 min read

CI timing data lives in a separate tool from the rest of your observability.

Why it happens

Workflow runs are naturally traces — jobs and steps are spans — but nothing emits them by default.

How to fix it

  1. Model the run as a trace with jobs and steps as child spans
  2. Export to your existing backend so CI sits alongside production telemetry
  3. Use span attributes for runner label, cache hit and exit code
  4. The critical path becomes visible immediately, which a duration list never shows

Your next build could be twice as fast, at half the price

Start free. Migrating away is the same one line, and we publish that diff too.