Skip to content

chore(ci): default reusable runners to ubuntu-latest for public consumers#44

Merged
BryanFRD merged 1 commit into
mainfrom
chore/default-public-runner-to-ubuntu
May 13, 2026
Merged

chore(ci): default reusable runners to ubuntu-latest for public consumers#44
BryanFRD merged 1 commit into
mainfrom
chore/default-public-runner-to-ubuntu

Conversation

@BryanFRD
Copy link
Copy Markdown
Contributor

Default the runner input on all reusable workflows to ubuntu-latest so public OSS consumers (FerrFlow, Benchmarks, Fixtures, FerrVault operator) run on GitHub-hosted runners for free, while private consumers (Cloud APIs/sites, Kit, UI, MCP, Infra) keep passing runner: ferrlabs-k8s explicitly.

Why:

  • Public repos get unlimited free minutes on GitHub-hosted runners
  • Stop burning self-hosted capacity for OSS workloads
  • No infra dependency for OSS contributors / community PRs
  • Safer default: a new consumer that forgets to set runner lands on free hosted runners, not on the private cluster

Reusables touched

File Change
reusable-ci-astro.yml runner default ferrlabs-k8subuntu-latest
reusable-ci-node.yml runner default ferrlabs-k8subuntu-latest
reusable-docker-build.yml New runner input (default ubuntu-latest); build job switches runs-on: ferrlabs-k8sruns-on: ${{ inputs.runner }}

Already correct (no change needed):

  • reusable-ci-rust.yml — already defaults to ubuntu-latest
  • reusable-ci-go.yml — already defaults to ubuntu-latest
  • reusable-release-rust.yml — uses the matrix-os pattern, no self-hosted reference
  • reusable-security-scan.yml — hardcoded ubuntu-latest on every job (light, no need for parameterization)

Workflow templates

workflow-templates/{ci-astro,ci-node,release}.yml switched from hardcoded runs-on: ferrlabs-k8s to runs-on: ubuntu-latest. New repos scaffolded from these templates land on free hosted runners by default; private repos can swap the line manually when they want the self-hosted cluster.

README.md clarified accordingly.

Private consumer migration

Private repos (FerrLabs-Cloud, FerrFlow-Cloud, FerrVault-Cloud, FerrTrack-Cloud, FerrGrowth-Cloud, FerrFleet-Cloud, FerrGames-Cloud, Kit, UI, MCP, Infra) that consume these reusables need to keep passing runner: ferrlabs-k8s if they want the self-hosted cluster. A spot-check is in progress in a follow-up.

Copilot AI review requested due to automatic review settings May 13, 2026 16:06
@BryanFRD BryanFRD force-pushed the chore/default-public-runner-to-ubuntu branch from e89ce46 to 61e5638 Compare May 13, 2026 16:09
@BryanFRD BryanFRD merged commit 190fb70 into main May 13, 2026
1 check passed
@BryanFRD BryanFRD deleted the chore/default-public-runner-to-ubuntu branch May 13, 2026 16:09
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the organization’s reusable workflows and workflow templates to default to GitHub-hosted runners (ubuntu-latest) so that public OSS consumers run for free on hosted runners by default, while private consumers can still opt into self-hosted capacity by explicitly passing runner: ferrlabs-k8s.

Changes:

  • Switch workflow templates (ci-node, ci-astro, release) to runs-on: ubuntu-latest.
  • Update reusable CI workflows (reusable-ci-node, reusable-ci-astro) to default their runner input to ubuntu-latest.
  • Add a runner input to reusable-docker-build (default ubuntu-latest) and wire the heavy build job to runs-on: ${{ inputs.runner }}.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
workflow-templates/release.yml Template now runs releases on ubuntu-latest by default.
workflow-templates/README.md Documentation updated to describe the new default and override mechanism.
workflow-templates/ci-node.yml Template now runs Node CI on ubuntu-latest by default.
workflow-templates/ci-astro.yml Template now runs Astro CI on ubuntu-latest by default.
.github/workflows/reusable-docker-build.yml Introduces runner input and routes the build job’s runs-on through it.
.github/workflows/reusable-ci-node.yml Changes default runner input to ubuntu-latest.
.github/workflows/reusable-ci-astro.yml Changes default runner input to ubuntu-latest.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +45 to +48
description: 'GitHub Actions runner label for the build job (the heavy one). Private consumers pass `ferrlabs-k8s`; public consumers leave the default.'
type: string
required: false
default: 'ubuntu-latest'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants