open-source

Runner Types: Integration vs Default

Modern CI pipelines in this repository classify runners into two categories to control cost and coverage. Understanding the difference allows you to target expensive resources only when necessary and keep feedback cycles fast.

Default (“standard”) runners

Integration runners

Declaring runner types

Requirement mapping files define which runner each test or requirement targets:

{
  "runners": {
    "ubuntu-latest": {
      "runner_label": "ubuntu-latest",
      "runner_type": "integration"
    },
    "windows-latest": {
      "runner_label": "windows-latest"
      /* implicit runner_type: "standard" */
    }
  },
  "requirements": [
    {
      "id": "REQ-009",
      "runner": "ubuntu-latest",
      "tests": ["Build.Workflow"]
    }
  ]
}

The summarizer partitions results by runner_type, producing artifacts such as summary-integration.md alongside summary-standard.md. This separation keeps integration evidence distinct from fast feedback produced on default runners.

Recommendations for CI/CD engineers

  1. Minimize integration usage. Start with standard runners and move tests to integration environments only when they require external dependencies or state.
  2. Isolate heavy workflows. Place integration jobs in separate stages or repositories to avoid blocking quick validation paths.
  3. Protect self-hosted runners. Apply concurrency limits and explicit needs chains so multiple integration jobs do not compete for the same hardware.
  4. Audit runner labels. Keep requirement mapping files synchronized with the actual fleet of self-hosted machines. Stale labels lead to idle jobs.
  5. Document expectations. When adding new requirements or workflows, update docs/requirements.md so the Runner and Runner Type columns reflect the intended infrastructure.

By explicitly classifying jobs, teams can scale the project efficiently—routine tasks remain fast on default runners while integration tests validate real‑world behavior without overloading scarce resources.

Updating runner metadata

Administrators can modify runner mappings without opening a pull request by running the update-runner-runtime workflow. For step‑by‑step instructions, input examples, and troubleshooting tips, see the Update Runner Runtime guide.