Skip to content

nightly: build the darwin legs on the self-hosted mac - #422

Draft
noahgift wants to merge 3 commits into
mainfrom
ci/nightly-darwin-self-hosted-mac
Draft

noahgift wants to merge 3 commits into
mainfrom
ci/nightly-darwin-self-hosted-mac

Conversation

@noahgift

@noahgift noahgift commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Moves the two nightly darwin legs (x86_64-apple-darwin, aarch64-apple-darwin) of .github/workflows/nightly.yml from GitHub's hosted macos-latest to the fleet's self-hosted mac: runs-on: [self-hosted, macOS, ARM64, mini] (runner mini-m4). Linux and Windows legs are untouched. release.yml, lint.yml, test.yml and every push / pull_request job are untouched.

Fork safety. nightly.yml triggers only on schedule and workflow_dispatch. No pull request can run it, so no fork code reaches the mac.

What a persistent mac needs that the hosted image gave for free. One step, guarded by endsWith(matrix.target, '-apple-darwin'), writes to $GITHUB_ENV before the toolchain is installed:

  • CARGO_TARGET_DIR=$GITHUB_WORKSPACE/target. The runner's environment points CARGO_TARGET_DIR at a shared directory, and the Package step copies target/<triple>/release/<bin> relative to the workspace. With the override the build lands exactly where Package reads it.
  • RUSTUP_HOME=<runner tool cache>/rustup, so dtolnay/rust-toolchain and rustup target add install into the runner's own cache instead of the host's shared ~/.rustup.
  • CARGO_HOME=<runner tool cache>/cargo. This job set none, so on the mac it would have used the shared ~/.cargo.

Non-darwin legs: the step is skipped, so they get no new variable.

actionlint .github/workflows/nightly.yml is clean.

Before merge. mini-m4 sits in a runner group that does not admit this repository yet. Changing that is an org-side step taken separately. Until it lands, these two legs would queue and be cancelled after 24 h, so this PR stays a draft.

Proof after merge. check-activity sets has_commits=true on any workflow_dispatch, regardless of whether the nightly tag is at HEAD, so a manual dispatch builds both darwin legs.

Refs #421. The issue stays open until a post-merge dispatch of nightly.yml shows both darwin legs green on mini-m4.

🤖 Generated with Claude Code

The x86_64-apple-darwin and aarch64-apple-darwin legs of nightly.yml move
from GitHub's macos-latest to [self-hosted, macOS, ARM64, mini]. Linux and
Windows legs are unchanged. nightly.yml runs only on schedule and
workflow_dispatch, so no pull request reaches that host.

A persistent mac differs from the hosted image in two ways, handled in one
step guarded by endsWith(matrix.target, '-apple-darwin'):
- the runner environment points CARGO_TARGET_DIR at a shared directory, and
  the Package step copies from target/<triple>/release, so the darwin legs
  set CARGO_TARGET_DIR to $GITHUB_WORKSPACE/target;
- the host's ~/.rustup and ~/.cargo are shared with other work, so
  RUSTUP_HOME and CARGO_HOME go under the runner's tool cache.

Refs #421

Pmat-Ticket: PMAT-421
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift
noahgift marked this pull request as draft October 4, 2026 14:54

This branch has not been deployed

No deployments
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