Repository navigation
Conversation
Point first-party jobs at [self-hosted, macOS, ARM64], make workflow scripts BSD-portable (no apt/sudo, scratch files in $RUNNER_TEMP), drop Playwright --with-deps, and document runner prerequisites. Leave Google's osv-scanner reusable workflow on GitHub-hosted Ubuntu; that callee pins its own runner and Linux container. Co-authored-by: Joe Blau <[email protected]>
Job-level env cannot use the runner context on these Mac minis, so set TMPDIR=$RUNNER_TEMP via GITHUB_ENV in a setup step. Run coverage on pull requests so that Mac mini job is verified with the rest of CI. Co-authored-by: Joe Blau <[email protected]>
codecov-action refuses to start without host gpg. Download the official universal macOS CLI (v11.3.1), SHA256-verify it, and upload with the same --file/--disable-search/--fail-on-error flags. Do not skip the upload. Co-authored-by: Joe Blau <[email protected]>
setup-bun writes ~/.bun, which is shared across runner instances on the same Mac mini. A parallel job overwrote canary mid-run (1.4.4 then 1.4.0), and the perf gate refused the environment mismatch. Isolate the binary. Co-authored-by: Joe Blau <[email protected]>
The canary zip ships only bun. docs runs bunx playwright install chromium and failed with command not found. Co-authored-by: Joe Blau <[email protected]>
Self-hosted workspaces persist. A prior job left RUNNER_TEMP/base registered after the directory was wiped, so worktree add failed. Co-authored-by: Joe Blau <[email protected]>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrate every first-party GitHub Actions job onto the self-hosted Apple Silicon Mac minis. Joe approved migrating everything.
Workflow scripts are BSD-portable (no
apt,sudo, or GNUsed -i) and write scratch files under$RUNNER_TEMP. Playwright no longer uses--with-deps. Coverage generation and uploads are unchanged in scope (same file,--disable-search, fail on upload error).Job-level
envon these runners cannot use therunnercontext (${{ runner.temp }}does not parse). Every first-party job now exportsTMPDIR=$RUNNER_TEMPvia$GITHUB_ENVin a setup step. Workflows do not callreplace().Coverage now also runs on pull requests so the Mac mini coverage job is verified with the rest of CI (it still runs on
mainandworkflow_dispatch).Jobs migrated
code_quality.ymlqualitycoverage.ymlcoveragedocs.ymldocsdocs.ymldeployperf.ymlperfpublish_npm.ymlpublishtests_offline.ymltesttests_online.ymltestNot migrated
security.yml/osv-scanstill callsgoogle/osv-scanner-actionreusable workflow. That callee pinsruns-on: ubuntu-latestand a Linux container internally, so this repository cannot choose its runner.The docs job no longer uses
lycheeverse/lychee-action(Linux GNU binary + GNUinstall -t). It downloads the same lychee v0.24.2aarch64-apple-darwinCLI into$RUNNER_TEMP, checksum-verifies it, and runs the same Markdown scan.Coverage no longer uses
codecov/codecov-action. That action requires hostgpg, which is not on the Mac mini. The job pin-downloads Codecov CLI v11.3.1codecovcli_macos(universal x86_64/arm64), SHA256-verifies it, and runs the sameupload-coveragewith--fail-on-error.Jobs no longer use
oven-sh/setup-bun. That action installs into~/.bun, which is shared across runner instances on the same Mac mini. A parallel canary install overwrote Bun mid-job (1.4.4 → 1.4.0) and the perf gate refused the environment mismatch. Each job now downloadsbun-darwin-aarch64canary into$RUNNER_TEMPand linksbunxnext tobun(the zip ships onlybun).The perf job prunes leftover git worktrees before adding the base checkout. Self-hosted workspaces persist; a prior job can leave
$RUNNER_TEMP/baseregistered after the directory is wiped.Runner prerequisites
See
docs/ci-runners.md. The Mac mini needs:self-hosted,macOS,ARM64git,clang)curl,tar,unzip,sed,shasum,bash,teeThis repository's workflows do not require host
gh,gtar,jq, orgpg. Publish reads the version with Bun; archives use stocktar; Codecov uses the pinned CLI above.Host gap (sibling repos): the Mac mini has no
gpg. Any workflow that still callscodecov/codecov-actionwithout a pre-verified binary will fail until GnuPG is installed onPATH.Workflows install Bun canary, Node.js 24 (publish only), Playwright Chromium, lychee, and the Codecov CLI themselves. Homebrew, Docker,
apt, andsudoare not required.CI may stay queued until a labeled runner picks the jobs up. Do not merge until that is confirmed.