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.
ubuntu-latest
or windows-latest
.requirements-core.json
) omit runner_type
or set it to standard
. Workflows simply use runs-on: ubuntu-latest
or similar.runner_type: "integration"
in the appropriate mapping file and reference the runner by label in workflows. Integration entries often set skip_dry_run: true
to force real execution.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.
needs
chains so multiple integration jobs do not compete for the same hardware.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.
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.