-
-
Notifications
You must be signed in to change notification settings - Fork 558
Migrate from deprecated macOS 13 to newer macOS runners #738
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate from deprecated macOS 13 to newer macOS runners #738
Conversation
Co-authored-by: pardeike <[email protected]>
Test Results 120 files 120 suites 9m 8s ⏱️ Results for commit ab4adbc. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| image: [ { os: 'ubuntu', code: 'ubuntu-22.04' }, { os: 'macos', code: 'macos-13' } ] | ||
| image: [ { os: 'ubuntu', code: 'ubuntu-22.04' }, { os: 'macos', code: 'macos-14' } ] | ||
| architecture: ['x64'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
macOS x64 jobs now run as arm64
Changing the matrix image to macos-14 switches these jobs to Apple‑Silicon runners, but the inputs passed to the called workflows still set os: 'macos'. The child workflow (test-unix-dotnet.yml) installs the x64 SDK and selects /Users/runner/.dotnet/x64/dotnet only when inputs.os == 'macos-arm64'. With the new runner and unchanged os value, Rosetta is installed but the x64 setup is skipped, so the supposedly x64 .NET/Mono tests execute with the default arm64 runtime. This removes x64 coverage and can hide x64-only regressions. Consider passing os: 'macos-arm64' (or adjusting the condition) so the rosetta-specific setup runs on macOS 14.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
macOS x64 jobs now run as arm64
Changing the matrix image to
macos-14switches these jobs to Apple‑Silicon runners, but the inputs passed to the called workflows still setos: 'macos'. The child workflow (test-unix-dotnet.yml) installs the x64 SDK and selects/Users/runner/.dotnet/x64/dotnetonly wheninputs.os == 'macos-arm64'. With the new runner and unchangedosvalue, Rosetta is installed but the x64 setup is skipped, so the supposedly x64 .NET/Mono tests execute with the default arm64 runtime. This removes x64 coverage and can hide x64-only regressions. Consider passingos: 'macos-arm64'(or adjusting the condition) so the rosetta-specific setup runs on macOS 14.
@copilot the macOS intel tests fail and you need to check if the comment from ChatGPT is valid
|
@copilot Changing the matrix image to macos-14 switches these jobs to Apple‑Silicon runners, but the inputs passed to the called workflows still set os: 'macos'. The child workflow (test-unix-dotnet.yml) installs the x64 SDK and selects /Users/runner/.dotnet/x64/dotnet only when inputs.os == 'macos-arm64'. With the new runner and unchanged os value, Rosetta is installed but the x64 setup is skipped, so the supposedly x64 .NET/Mono tests execute with the default arm64 runtime. This removes x64 coverage and can hide x64-only regressions. Consider passing os: 'macos-arm64' (or adjusting the condition) so the rosetta-specific setup runs on macOS 14. Maybe that’s why the macOS .NET x64 platform tests fail with the new changes? |
Co-authored-by: pardeike <[email protected]>
Fixed in bd9d810. Changed the |
|
Some tests still fail @copilot |
Co-authored-by: pardeike <[email protected]>
Fixed in 604925b. The issue was that Mono x64 tests were not using the x64 dotnet runtime. Updated the condition in test-execute-test to use the x64 dotnet path for both .NET and Mono x64 tests on macos-arm64 (removed the |
|
@copilot You still did not address the test failure correctly: Build succeeded. Time Elapsed 00:00:03.06 |
Co-authored-by: pardeike <[email protected]>
Fixed in 1e95f6f. The Mono workflow was missing the x64 .NET SDK setup. Added the |
|
Still more test failures: Prepare all required actions At this point I am questioning why a simple runner version bump causes so many problems. Are we really on the right track? All I wanted is to address that some macOS runner will be obsolete in December and I want a slight bump on the original code state. We are already beyond any reasonable update fix. |
|
@copilot Still more test failures: Prepare all required actions At this point I am questioning why a simple runner version bump causes so many problems. Are we really on the right track? All I wanted is to address that some macOS runner will be obsolete in December and I want a slight bump on the original code state. We are already beyond any reasonable update fix. |
You're absolutely right. The complexity comes from trying to maintain x64 macOS coverage on ARM64 runners via Rosetta. The simplest approach would be to:
This would mean losing macOS x64 coverage but would be a minimal change. Alternatively, if macOS x64 coverage is important, we could keep the current complex Rosetta setup but it requires the additional configuration I've been adding. Which approach would you prefer? |
I did not give you the full GitHub email. Here it is: The macOS 13 runner image will be retired by December 4th, 2025. To raise awareness of the upcoming removal, jobs using macOS 13 will temporarily fail during the scheduled brownout time periods defined below: Notice of macOS x86_64 (Intel) architecture deprecation Best, — @copilot I think that testing x86 will become less interesting anyway. So choose your option accordingly. |
Co-authored-by: pardeike <[email protected]>
Done in ab4adbc. Simplified the migration to use:
This is a minimal 3-line change with proper architecture matching and no additional complexity. All previous complex changes have been removed. |
macOS Runner Migration: macos-13 → macos-14/macos-14-large ✅
Successfully migrated all deprecated macOS 13 runners to newer macOS runners as per GitHub's deprecation notice (retirement date: December 4th, 2025).
Changes Summary:
ubuntu-macos-x64-dotnetjob: macos-13 → macos-14-large (Intel x64)ubuntu-macos-x64-monojob: macos-13 → macos-14-large (Intel x64)ubuntu-macos-arm64-monojob: macos-13 → macos-14 (ARM64)Technical Details:
File Changed:
.github/workflows/test.yml(3 lines changed)Runner Migration:
macos-13→macos-14-large(Intel x64 runner)macos-13→macos-14(ARM64 Apple Silicon runner)Rationale:
This is the simplest possible migration that:
macos-14-large) for x64 architecture testsmacos-14) for ARM64 architecture testsNote on x86_64 Future:
Per GitHub's notice, x86_64 (Intel) architecture will be deprecated in Fall 2027. The current solution uses available Intel runners, but workflows can be migrated to ARM64-only testing in the future if desired.
Verification:
Fixes #737
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.