CI Insights

Resource Monitoring

Drop the everr-action into a workflow to capture per-job runner metrics and ship them to Everr.

The Everr GitHub Action runs alongside your CI jobs and uploads per-job runner metrics (CPU, memory, network, disk) as a workflow artifact. Everr ingests the artifact and stitches the samples onto the matching check run so you can see resource pressure next to the rest of your CI signal.

That resource signal helps you find CI optimization opportunities. If a job is CPU-bound, moving it to a larger runner might reduce wall-clock time enough to save money despite the higher per-minute rate. If memory, disk, or network is the bottleneck, the data points you toward a different fix than blindly changing runner size.

Quick start

Add the action near the start of any job whose resource usage you want to track, after any setup steps you do not need sampled. Pass ${{ job.check_run_id }} so Everr can stitch the uploaded samples onto the matching check run.

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: everr-labs/everr-action@v0
        with:
          check-run-id: ${{ job.check_run_id }}

      # ...the rest of your job

That's it — the action samples while your job runs and uploads the artifact in its post-step.

How it works

  • Pre-step. Validates the check-run-id input, then spawns a detached background sampler script that writes one NDJSON line every five seconds.
  • During the job. Your job runs normally; the sampler does not block, and a failed sampler never fails the job.
  • Post-step. Stops the sampler, normalizes the samples, writes metadata.json + samples.ndjson, and uploads them as a workflow artifact named everr-resource-usage-v2-{check_run_id} (7-day retention).

Sampling currently runs only on Linux runners. macOS and Windows jobs get a no-op start and a warning at finalize time.

Inputs

NameRequiredDefaultDescription
resource-usageno"true"Whether to sample per-job resource usage. Set to "false" to opt out without removing the step.
check-run-idno""Check run id for the current workflow job, e.g. ${{ job.check_run_id }}. The action no-ops with a warning when it is missing.

Failure modes

The action is designed to never fail the host job. Each of the following downgrades to a warning:: annotation:

  • check-run-id is missing or malformed.
  • The sampler script fails to start or exits early.
  • The finalize step can't read its sample file or the upload fails.
  • The runner is not Linux.

The host job continues as if the action wasn't present.