8000 ci: prefer local Mac runner with offline cloud fallback by hmmhmmhm · Pull Request #25 · hmmhmmhm/node-packages · GitHub
[go: up one dir, main page]

Skip to content

ci: prefer local Mac runner with offline cloud fallback - #25

Merged
hmmhmmhm merged 1 commit into
mainfrom
local-runner-fallback
Oct 6, 2026
Merged

hmmhmmhm merged 1 commit into
mainfrom
local-runner-fallback

Conversation

@hmmhmmhm
@hmmhmmhm hmmhmmhm commented Oct 6, 2026 •
Copy link
Copy Markdown
Owner

Compatible CI jobs prefer the dedicated personal-mac-node-packages runner. A short GitHub-hosted selection job checks its status and selects the original cloud runner when the Mac is offline, absent, or the status API fails. Busy local runners remain eligible and wait for the shared Mac job slot.

The selector requires LOCAL_RUNNER_STATUS_TOKEN, a fine-grained token restricted to the selected repositories with Administration read-only. Without it, jobs continue on GitHub-hosted runners. External PRs and non-owner events use cloud runners. A manual smoke workflow provides forced-cloud and owner-only local installation probes.

Existing triggers, job permissions and build/test commands are preserved, apart from the explicit macOS FFmpeg setup where applicable. Selection happens before the job is queued; this does not migrate a running job or recover from the Mac going offline after selection.

Validation: 13 selector scenarios passed, 7 host trust checks passed, shared-slot serialization and worker-crash recovery tests passed, and actionlint passed for the changed workflows in all 12 repositories. Application CI and live runner checks are tracked separately.

Rollout prerequisite: review/merge this draft. The scoped status secret is installed and its read access was verified for this repository. Runner registration and launchd services are installed on the Mac; the default branch remains unchanged until merge.

Live installation verification: local Mac smoke passed on personal-mac-node-packages; cloud smoke passed with the missing-token cloud selection. An actual stop/start of the aka-browser service was also checked against the GitHub API and the same selector implementation: online selects Mac labels, offline selects macos-latest. The scoped status secret is now installed; token-based local selection passed on all 12 repositories.

Token-based online selection passed on personal-mac-node-packages. Status credential: local-runner-status-2026-10, expires 2027-01-04, Administration and Metadata read-only, restricted to the selected 12 repositories. Token value is not included in this PR.

@hmmhmmhm
hmmhmmhm marked this pull request as ready for review October 6, 2026 04:03
@hmmhmmhm
hmmhmmhm merged commit 53994cc into main Oct 6, 2026
17 checks passed
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

0