Skip to content

Update macOS CI images#1971

Merged
Dead2 merged 1 commit intozlib-ng:developfrom
ccawley2011:macos-latest
Sep 30, 2025
Merged

Update macOS CI images#1971
Dead2 merged 1 commit intozlib-ng:developfrom
ccawley2011:macos-latest

Conversation

@ccawley2011
Copy link
Copy Markdown
Contributor

@ccawley2011 ccawley2011 commented Sep 27, 2025

The macos-13 images are currently deprecated and will be removed in December, with macos-15-intel being the replacement for Intel builds.

More information: https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/

Summary by CodeRabbit

  • Chores

    • Updated macOS CI matrix to explicitly cover Intel runners and align ARM64 labels.
    • Added native-instruction builds for macOS Intel to validate performance-related flags.
    • Refreshed macOS runner versions and toolchains to improve compatibility and stability.
  • Tests

    • Expanded sanitizer coverage (ASAN/UBSAN) on macOS Intel.
    • Improved cross-platform CI consistency, increasing confidence in macOS (Intel and ARM64) builds.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Sep 27, 2025

Walkthrough

Updates GitHub Actions workflows to use Intel-based macOS runners, renames jobs to reflect architecture, adjusts compiler/tooling for UBSAN on Intel, and adds a new macOS Clang Native Instructions (Intel) job. Minor alignment for ARM64 entries and runner labels; no source code changes.

Changes

Cohort / File(s) Summary of Changes
macOS Intel runner and job updates (CMake workflow)
.github/workflows/cmake.yml
- Renamed macOS Clang jobs to include “(Intel)”; switched runners to macos-15-intel.
- Replaced GCC UBSAN with “macOS UBSAN (Intel)”; set compiler to gcc-13/g++-13, packages to gcc@13, gcov-13.
- Added “macOS Clang Native Instructions (Intel)” with -DWITH_NATIVE_INSTRUCTIONS=ON.
- ARM64 native-instructions job moved to macos-latest; ARM64 UBSAN label alignment retained.
macOS Intel runner and label updates (Configure workflow)
.github/workflows/configure.yml
- Three macOS entries retargeted to macos-15-intel and renamed to include “(Intel)”. Compilers, configure args, and packages unchanged.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

Continuous Integration

Suggested reviewers

  • nmoinvaz

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title succinctly describes the primary change of updating macOS CI images to new runners and aligns with the modifications made to the workflows without including unnecessary detail or noise.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (5)
.github/workflows/configure.yml (3)

205-210: Same runner-label concern for Intel job.

Duplicate of the runner label validation above; ensure the label exists or adjust accordingly, and align actionlint config if needed.

If the label is valid, consider centralizing the macOS Intel label in a matrix default or a YAML anchor to reduce repetition.


218-223: Same runner-label concern for Intel job.

Please verify macos-15-intel availability or update to a supported label/self-hosted. Align actionlint to avoid CI lint failures if the label is correct.

Consider adding a brief comment near these entries linking the GitHub changelog for future maintainers.


192-197: Update actionlint config to whitelist macos-15-intel
macos-15-intel is an official GitHub-hosted runner (GA April 10 2025, available on Free/Pro/Team); add it to actionlint’s allowed labels to silence the warning.

.github/workflows/cmake.yml (2)

621-627: Confirm availability of "macos-15-intel".

actionlint marks this label as unknown. Validate that the runner label exists for GitHub-hosted runners; otherwise this job won’t start. If valid, update actionlint configuration to include it; if not, choose a supported label or self-hosted Intel.

Fallbacks:

  • Use macos-15 (Apple Silicon) + Rosetta for x86_64 builds, or
  • Keep macos-13 until cutoff, or
  • Move Intel to self-hosted with labels like [self-hosted, macos, x64].

660-665: Same runner-label validation for Clang Native Instructions (Intel).

This new job relies on Intel hardware; confirm macos-15-intel exists. If not, consider self-hosted Intel or an interim macos-13 path until deprecation.

If forced to Apple Silicon, you can still exercise x86_64 via Rosetta:

  • Install Rosetta: softwareupdate --install-rosetta --agree-to-license
  • Build under arch -x86_64 and set CMAKE_OSX_ARCHITECTURES=x86_64
    Note: performance characteristics will differ vs native Intel.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7800569 and 1a13900.

📒 Files selected for processing (2)
  • .github/workflows/cmake.yml (3 hunks)
  • .github/workflows/configure.yml (3 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/configure.yml

193-193: label "macos-15-intel" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)


206-206: label "macos-15-intel" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)


219-219: label "macos-15-intel" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

.github/workflows/cmake.yml

622-622: label "macos-15-intel" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)


629-629: label "macos-15-intel" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)


643-643: label "macos-15-intel" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)


661-661: label "macos-15-intel" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (97)
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 C17
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 C17
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 C17
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 C17
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 C17
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 C17
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
  • GitHub Check: macOS GCC UBSAN (ARM64)
  • GitHub Check: Windows ClangCl Win32
  • GitHub Check: Windows MSVC 2022 v141 Win32
  • GitHub Check: Windows MSVC 2022 v143 Win64 C17
  • GitHub Check: Windows MSVC 2022 v143 Win64 Native Instructions (AVX)
  • GitHub Check: Windows MSVC 2022 v143 Win32
  • GitHub Check: Ubuntu Clang No Threads
  • GitHub Check: Ubuntu GCC Symbol Prefix
  • GitHub Check: EL9 GCC S390X DFLTCC ASAN
  • GitHub Check: Ubuntu GCC AARCH64 Compat No Opt UBSAN
🔇 Additional comments (3)
.github/workflows/cmake.yml (3)

628-634: Same runner-label validation for ASAN (Intel).

Ensure macos-15-intel is valid/available or adjust. Update actionlint allowlist if correct to avoid lint failures.


642-649: Same runner-label validation for GCC UBSAN (Intel).

Double-check label availability; this job also changes toolchain to gcc-13/g++-13. Please verify Homebrew packages gcc@13 and gcov-13 are present on the target image.

You can validate Homebrew availability at runtime with a small pre-step:

  • brew --version
  • brew info gcc@13

667-671: LGTM: ARM64 native-instructions on macOS-latest.

Using macos-latest for ARM64 aligns with Apple Silicon. No issues spotted.

Please confirm macos-latest currently maps to macOS 15 for your org to keep behavior consistent across workflows.

@codecov
Copy link
Copy Markdown

codecov bot commented Sep 27, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.57%. Comparing base (7800569) to head (1a13900).
⚠️ Report is 2 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1971      +/-   ##
===========================================
- Coverage    81.60%   81.57%   -0.03%     
===========================================
  Files          163      163              
  Lines        14073    14073              
  Branches      3165     3165              
===========================================
- Hits         11484    11480       -4     
- Misses        1597     1619      +22     
+ Partials       992      974      -18     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@mtl1979
Copy link
Copy Markdown
Collaborator

mtl1979 commented Sep 29, 2025

It's good that someone else is also keeping macOS CI workflows up-to-date... Looks like this doesn't revert any of the workarounds I did in the previous PR, and all CI workflows are still passing... Seems like some macOS packages in the CI runners are slow to get updated for macOS 15, so we still need to look out for any breakages in the future.

@Dead2 Dead2 merged commit 7d7db7a into zlib-ng:develop Sep 30, 2025
156 checks passed
@ccawley2011 ccawley2011 deleted the macos-latest branch September 30, 2025 20:10
@Dead2 Dead2 mentioned this pull request Nov 5, 2025
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.

3 participants