rinha4.c

CI/CD Pipeline

Main build flow:

  1. Build amd64 Docker image.
  2. Push immutable ci-${GITHUB_SHA} tag to GHCR.
  3. Start Docker Compose with that exact image.
  4. Clone official Rinha 2026 repo.
  5. Run public test/test.js through k6.
  6. Upload raw benchmark artifacts.
  7. Archive summarized JSON into docs/public/reports.
  8. GitHub Pages deploys the docs site.

The automatic main-branch benchmark runs against the immutable image tag built in the same workflow, not a locally rebuilt image. The canonical submission/runtime shape is root docker-compose.yml with the standalone yolo FD-passing load balancer and two API containers while Docker resource limits remain active.

The comparison branch is isolated from main. It keeps public competitor compose files under competitor-compose/ and runs a same-matrix benchmark against our current candidate plus the compact active matrix:

Other historical competitor compose files are intentionally not kept active on the branch unless Jonathan requests a broader/full-field comparison.

Manual Official-like Benchmark runs can archive experiment reports too. Use report_kind=experiment for non-default search/runtime parameters so failed or alternate runs stay visible in index.json/latest.json without moving latest-candidate.json.

Report files

FilePurpose
latest.jsonlatest archived benchmark result, regardless of report kind
latest-candidate.jsonlatest report_kind=candidate submission-stack result
index.jsonsorted benchmark history with report_kind metadata for candidate, experiment, and calibrated runs
rinha-benchmark-*.jsonimmutable benchmark records
rinha-benchmark-*.htmlk6 HTML reports when generated

The report archive commit is docs-only. The build workflow ignores docs-only report commits, so report archiving does not trigger a new benchmark loop.

When benchmark reports change, the build workflow triggers the Pages workflow so /reports/ refreshes without manual action.