Skip to content

chore: change ci runners to reduce x86_64 macOS build time - #726

Open
evan-sift wants to merge 6 commits into
mainfrom
ci/bigger-release-runners
Open

chore: change ci runners to reduce x86_64 macOS build time#726
evan-sift wants to merge 6 commits into
mainfrom
ci/bigger-release-runners

Conversation

@evan-sift

@evan-sift evan-sift commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

when updating ALL runners to be better, here are the rough diffs:

┌────────────────────────────────┬──────────┬─────────┐
│              Job               │   Old    │  Final  │
├────────────────────────────────┼──────────┼─────────┤
│ Linux (RunsOn 8cpu, on-demand) │ 16.5 min │ 6m08s   │
├────────────────────────────────┼──────────┼─────────┤
│ arm64 macOS                    │ 16 min   │ 8m37s   │
├────────────────────────────────┼──────────┼─────────┤
│ x86_64 macOS (arm64 cross)     │ 41 min   │ 11m26s  │
├────────────────────────────────┼──────────┼─────────┤
│ Windows (unchanged runner)     │ 30 min   │ 28m10s  │
├────────────────────────────────┼──────────┼─────────┤
│ Release wall clock             │ ~42 min  │ ~29 min │
└────────────────────────────────┴──────────┴─────────┘

so I think if we just update the x86_64 macOS (arm64 cross) runner, that will be sufficient, since now we're bottlenecked by windows. reverted the changes I had for Linux and arm64 macOS since the ~16m fall within the 30m bounds now

@jared-sift

Copy link
Copy Markdown
Collaborator

@evan-sift fyi, 8cpu-windows-x64 is not a valid runner spec

Wall clock for a release was ~42 minutes, dominated by the
x86_64-apple-darwin job (41 min on the Intel macos runner pool) and the
Windows job (30 min).

- Build x86_64-apple-darwin on an arm64 macos-15 runner and cross-compile.
  dist adds the rustup target itself, and the vendored HDF5 CMake build
  produces x86_64 objects correctly.
- Use RunsOn 8cpu runners for the Linux and Windows builds. The Linux label
  pins the ubuntu22 image to keep the glibc 2.35 baseline of the published
  binary. The labels are static because the matrix comes from the dist plan
  JSON, where GitHub expressions do not expand.
- Set precise-builds so dist builds only sift_cli with --package. The
  workspace build also compiled sift_stream_bindings (pyo3), which is not
  part of the CLI release and fails to link when cross-compiling.

The workflow YAML is unchanged: dist computes the runner matrix at plan
time from dist-workspace.toml.
Verifies the new RunsOn and arm64 macos runners on the PR itself.
Revert before merge.
@evan-sift
evan-sift force-pushed the ci/bigger-release-runners branch from 4bae82c to 1b86362 Compare August 11, 2026 21:28
The RunsOn stack in this org does not serve Windows jobs; the job sat
queued indefinitely on PR #726 while the Linux RunsOn job ran fine.
A release job stranded in the queue while an identical label was served
minutes earlier; stale spot capacity is the usual cause of intermittent
runs-on strands. On-demand instances remove that failure mode; azimuth
pins spot=false the same way for jobs that must not stall.
@evan-sift evan-sift changed the title Ci/bigger release runners chore: change ci runners to reduce x86_64 macOS build time Aug 12, 2026
@evan-sift
evan-sift marked this pull request as ready for review August 12, 2026 00:09
Comment thread dist-workspace.toml
Comment on lines +20 to +23
# Build only sift_cli with `--package` instead of the whole workspace. The
# workspace build compiles sift_stream_bindings (pyo3), which is not part of
# the CLI release and fails to link when the apple target is cross-compiled.
precise-builds = true

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

is this correct?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I found the docs on precise-builds and it seems like it probably will result in smaller builds based on this description. But the docs on github-custom-runners don't seem to show options for runner and host, but maybe they just aren't documented well?

@evan-sift
evan-sift requested a review from lineville August 14, 2026 17:41
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.

4 participants