Skip to content

Run CI on the fleet's local runners (Raspberry Pi arm64 pilot) when PM_LOCAL_RUNNER selects them - #31

Merged
unbraind merged 1 commit into
mainfrom
ci/local-runners
Nov 14, 2026
Merged

unbraind merged 1 commit into
mainfrom
ci/local-runners

Conversation

@unbraind

@unbraind unbraind commented Nov 14, 2026 •

Copy link
Copy Markdown
Owner

Pilot for running a small repository's full CI on the fleet's Raspberry Pi 4 runners (arm64), which frees GitHub's shared 20-job pool. This repository's jobs take 2–6 min on GitHub-hosted runners.

  • Routing: runs-on is an expression on the repository variable PM_LOCAL_RUNNER:

    • arm64 (set): Raspberry Pi runners, label pm-local-arm64;
    • on: the x64 LAN runners, label pm-local;
    • anything else: ubuntu-latest.

    The controller sets the variable from live capacity, and to off when no host answers.

  • Runners: each is a fresh container that takes one job (--ephemeral), capped in CPU, memory and pids, with no Docker socket and no host mounts.

  • Fork pull requests always use ubuntu-latest, and workflows from outside contributors' fork PRs need approval.

  • Concurrency: a new push cancels that PR's earlier CI run.

Required check names are unchanged. Related: unbraind/pm-memory#73 (x64 pilot).

Summary by Sourcery

Route trusted CI workloads to the selected ephemeral fleet runners while preserving safe fork handling and efficient pull-request concurrency.

New Features:

  • Route eligible CI jobs to Raspberry Pi arm64 or x64 fleet runners based on the PM_LOCAL_RUNNER repository variable.

Enhancements:

  • Keep fork pull requests on GitHub-hosted runners and preserve the existing fallback when local runners are unavailable.
  • Cancel superseded pull-request CI runs while isolating main-branch pushes and manual runs.

Summary by cubic

Lets CI run on the fleet's local runners instead of GitHub's shared pool by choosing the runner from the PM_LOCAL_RUNNER repository variable. With arm64, Linux jobs go to ephemeral Raspberry Pi runners (label pm-local-arm64); with on, to the x64 LAN runners (pm-local); with anything else they stay on ubuntu-latest. Fork pull requests always use GitHub-hosted runners, and a new push to a pull request now cancels that PR's earlier CI run rather than letting both queue. Required check names are unchanged.

Written for commit 83c8901. Summary will update on new commits.

View guided diff Turn on auto-fix

…M_LOCAL_RUNNER selects them

With the repository variable PM_LOCAL_RUNNER=arm64 the Linux jobs (1) run on
the fleet's ephemeral Raspberry Pi runners (label pm-local-arm64); with 'on'
they run on the x64 LAN runners (pm-local); with anything else, on
ubuntu-latest. Fork pull requests always stay on GitHub-hosted runners. A
new push to a pull request cancels that PR's earlier run. Required check
names are unchanged.
@sourcery-ai

sourcery-ai Bot commented Nov 14, 2026

Copy link
Copy Markdown

Sorry @unbraind, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 22 minutes by commenting @sourcery-ai review. Upgrade to get a review now.

@coderabbitai

coderabbitai Bot commented Nov 14, 2026

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 55cd894a-4fcb-4295-8b0f-7a345a52dc15
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@sourcery-ai

sourcery-ai Bot commented Nov 14, 2026

Copy link
Copy Markdown

Reviewer's Guide

Configuration

Route Linux CI to the selected local runner label while keeping fork pull requests on GitHub-hosted runners.

  • .github/workflows/ci.yml L12-13, L22

Cancel superseded pull-request CI runs while keeping main-branch and manual runs in separate concurrency groups.

  • .github/workflows/ci.yml L14-19

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@unbraind
unbraind merged commit d81f9b0 into main Nov 14, 2026
8 checks passed
@unbraind
unbraind deleted the ci/local-runners branch November 14, 2026 21:16
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.

1 participant