Skip to content

feat: per-callback runner selection (runs-on) #12

Description

@joshua-temple

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions