Skip to content

ci: pin runner images to ubuntu-24.04, macos-26, windows-2025 - #22010

Open
bhimrazy wants to merge 4 commits into
masterfrom
ci/pin-runner-images
Open

bhimrazy wants to merge 4 commits into
masterfrom
ci/pin-runner-images

Conversation

@bhimrazy

@bhimrazy bhimrazy commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

What does this PR do?

Pins CI runners to supported images: ubuntu-24.04, macos-26, windows-2025. macOS-14 retires on 2026-11-02 (with brownouts before) and ubuntu-22.04 is deprecated from 2026-09-17.

  • Test matrices (ci-tests-pytorch, ci-tests-fabric, ci-pkg-install) use the new labels; DISABLE_MPS now keys on startsWith(matrix.os, 'macos').
  • runs-on: ubuntu-22.04 jobs moved to ubuntu-24.04.
  • On macOS, the pytest step runs as root (sudo -E env "PATH=$PATH") to work around a ~35s DNS stall per process group on macOS 15+ runners (details below).
  • hooks.rst doctest no longer asserts the rich progress-bar width, which varied with runner speed and failed on ubuntu-24.04.
Why the macOS tests run as root

On the macos-15 / macos-26 images, macOS Local Network Privacy blocks mDNS for non-root processes, so any hostname or reverse-DNS lookup (even of 127.0.0.1) blocks for ~35s. torch's TCPStore calls getnameinfo() on every client connect (socket.cpp), so every ddp_spawn/gloo test paid 35-70s and the macOS jobs hit their timeouts. Root is exempt.

non-root root
getnameinfo(127.0.0.1) 35.0s 0.00s
TCPStore connect per rank 35.0s 0.05s
fabric test_default_process_group ~40s ~3s

Ruled out (all still 35s+): /etc/hosts entries, scutil --set HostName, /etc/resolver overrides, running over SSH, sudo -u runner, USE_LIBUV=0, MASTER_ADDR=localhost. Not torch-version dependent.

Upstream: actions/runner-images#14568, actions/runner-images#10924. The sudo prefix can be dropped once the images are fixed.

Other details

@github-actions

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

🌩️ Required checks status: Pending 🟡

Groups summary

🟡 pytorch_lightning: Tests workflow
Check ID Status
pl-cpu-guardian no_status ❓

These checks are required after the changes to .github/workflows/ci-tests-pytorch.yml.

🟢 fabric: Docs
Check ID Status
docs-make (fabric, doctest) success ✅
docs-make (fabric, html) success ✅

These checks are required after the changes to .github/workflows/docs-build.yml.

🟢 pytorch_lightning: Docs
Check ID Status
docs-make (pytorch, doctest) success ✅
docs-make (pytorch, html) success ✅

These checks are required after the changes to docs/source-pytorch/common/hooks.rst, .github/workflows/docs-build.yml.

🟢 lightning_fabric: CPU workflow
Check ID Status
fabric-cpu-guardian success ✅

These checks are required after the changes to .github/workflows/ci-tests-fabric.yml.

🟢 mypy
Check ID Status
mypy success ✅

These checks are required after the changes to .github/workflows/code-checks.yml.

🟢 install
Check ID Status
install-pkg-guardian success ✅

These checks are required after the changes to .github/workflows/_build-packages.yml, .github/workflows/ci-pkg-install.yml.


Thank you for your contribution! 💜

Note
This comment is automatically generated and updates for 70 minutes every 180 seconds. If you have any other questions, contact carmocca for help.

@codecov-commenter

codecov-commenter commented Oct 7, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87%. Comparing base (84df182) to head (ee017a6).
✅ All tests successful. No failed tests found.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@           Coverage Diff           @@
##           master   #22010   +/-   ##
=======================================
  Coverage      87%      87%           
=======================================
  Files         270      270           
  Lines       24015    24015           
=======================================
  Hits        20855    20855           
  Misses       3160     3160           

macos-14 is retired on 2026-11-02, but on macos-26 gloo/spawned-process
startup takes ~35s per test with torch>=2.7, pushing pl-cpu/fabric-cpu
past their timeouts. Use macos-15 for the test matrices for now and leave
a TODO to move to macos-26 in a follow-up.

Also stop asserting the rich progress-bar width in hooks.rst; it depends
on the it/s text and so on runner speed.
@bhimrazy bhimrazy changed the title ci: pin runner images to ubuntu-24.04, macos-26, windows-2025 ci: pin runner images to ubuntu-24.04, macos-15, windows-2025 Oct 12, 2026
…; move to macos-26

On the macos-15 and macos-26 runner images, macOS Local Network Privacy blocks
mDNS queries from non-root processes, so any hostname lookup or reverse-DNS
lookup (even of 127.0.0.1 / ::ffff:127.0.0.1) blocks for ~35s before falling
back. torch's TCPStore formats the peer address with getnameinfo() on every
client connect (c10d socket.cpp, SocketImpl ctor), so each ddp_spawn/gloo test
paid ~35s in rendezvous (TCPStore 35.0s vs 0.05s), regardless of torch version,
USE_LIBUV, MASTER_ADDR or /etc/hosts entries. Root processes are exempt: run the
test command via sudo on macOS (TCPStore 0.05s, fabric spawn tests 2-5s again).

See actions/runner-images#14568 and #10924.
@bhimrazy bhimrazy changed the title ci: pin runner images to ubuntu-24.04, macos-15, windows-2025 ci: pin runner images to ubuntu-24.04, macos-26, windows-2025 Oct 12, 2026
lkubb added a commit to salt-extensions/salt-extension-copier that referenced this pull request Oct 22, 2026
macOS 15+ runner images block mDNS queries from non-root processes
(Local Network Privacy), stalling each unresolvable hostname lookup
~35s. Salt's grains collection performs several unbounded serial
lookups per process, exceeding the salt-factories start timeout, so
the rendered projects' integration suites failed with
FactoryNotStarted on macos-15/26. Root processes are exempt, hence
run the test suite via sudo on macOS, both in this repo's CI and in
the rendered test workflow.

Refs:
* actions/runner-images#14568
* actions/setup-python#1223
* saltstack/salt#69840
* Lightning-AI/pytorch-lightning#22010
lkubb added a commit to salt-extensions/salt-extension-copier that referenced this pull request Oct 22, 2026
macOS 15+ runner images block mDNS queries from non-root processes
(Local Network Privacy), stalling each unresolvable hostname lookup
~35s. Salt's grains collection performs several unbounded serial
lookups per process, exceeding the salt-factories start timeout, so
the rendered projects' integration suites failed with
FactoryNotStarted on macos-15/26. Root processes are exempt, hence
run the test suite via sudo on macOS, both in this repo's CI and in
the rendered test workflow.

Refs:
* actions/runner-images#14568
* actions/setup-python#1223
* saltstack/salt#69840
* Lightning-AI/pytorch-lightning#22010
lkubb added a commit to salt-extensions/salt-extension-copier that referenced this pull request Oct 23, 2026
macOS 15+ runner images block mDNS queries from non-root processes
(Local Network Privacy), stalling each unresolvable hostname lookup
~35s. Salt's grains collection performs several unbounded serial
lookups per process, exceeding the salt-factories start timeout, so
the rendered projects' integration suites failed with
FactoryNotStarted on macos-15/26. Root processes are exempt, hence
run the test suite via sudo on macOS, both in this repo's CI and in
the rendered test workflow.

Refs:
* actions/runner-images#14568
* actions/setup-python#1223
* saltstack/salt#69840
* Lightning-AI/pytorch-lightning#22010
lkubb added a commit to salt-extensions/salt-extension-copier that referenced this pull request Oct 23, 2026
macOS 15+ runner images block mDNS queries from non-root processes
(Local Network Privacy), stalling each unresolvable hostname lookup
~35s. Salt's grains collection performs several unbounded serial
lookups per process, exceeding the salt-factories start timeout, so
the rendered projects' integration suites failed with
FactoryNotStarted on macos-15/26. Root processes are exempt, hence
run the test suite via sudo on macOS, both in this repo's CI and in
the rendered test workflow.

Refs:
* actions/runner-images#14568
* actions/setup-python#1223
* saltstack/salt#69840
* Lightning-AI/pytorch-lightning#22010

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.

2 participants