Problem
Every job generated by the framework is hardcoded to runs-on: ubuntu-latest. Users with self-hosted runners, ARM builds, GPU workloads, Windows targets, or GitHub's large runner SKUs have no way to express runner requirements through the manifest.
Proposed config
ci:
config:
# Global default (fallback for all callbacks)
runner: ubuntu-latest
builds:
- name: app
workflow: .github/workflows/build-app.yaml
runner: self-hosted # Per-build override
deploys:
- name: infra
workflow: .github/workflows/deploy-infra.yaml
runner: [self-hosted, linux, cdk] # Label set
The orchestrate and promote generators would emit runs-on: ${{ runner }} using the resolved value (per-callback override > global default > ubuntu-latest).
Impact
High — commonly hit by teams that build Docker images on ARM hosts, use GPU runners for ML builds, or have cloud-specific runner requirements.
Problem
Every job generated by the framework is hardcoded to
runs-on: ubuntu-latest. Users with self-hosted runners, ARM builds, GPU workloads, Windows targets, or GitHub's large runner SKUs have no way to express runner requirements through the manifest.Proposed config
The orchestrate and promote generators would emit
runs-on: ${{ runner }}using the resolved value (per-callback override > global default > ubuntu-latest).Impact
High — commonly hit by teams that build Docker images on ARM hosts, use GPU runners for ML builds, or have cloud-specific runner requirements.