actions / runner-images

GitHub Actions runner images
MIT License
9.12k stars 2.82k forks source link

macos 14 is only arm64 #9741

Closed wmertens closed 1 week ago

wmertens commented 1 week ago

Description

I specify

  build-bindings:
    strategy:
      matrix:
        settings:
          - host: macos-latest
            target: x86_64-apple-darwin

but I get an arm64 host. Are there no more x64 hosts for macos 14?

Platforms affected

Runner images affected

Image version and build link

Image: macos-14-arm64 Version: 20240415.6

Is it regression?

not sure

Expected behavior

should get latest macos with x64, even if that's not the latest macos

Actual behavior

get arm64

Repro steps

ask for x64 macos-latest runner

mikhailkoliada commented 1 week ago

Hello! As stated in the table the only intel-based macOS-14 runner is macos-14-large (doc). There are no plans to introduce macOS-14 intel standard runners as of now.

javierggt commented 1 week ago

I'm sorry, but if I understood correctly, @wmertens is not trying to run macOS-14 specifically. He uses macos-latest. He assumed macos-latest would be macOS-14, but the actual issue is with macos-latest.

I just hit an issue where I'm using macos-latest to build a conda package, and it determines the platform is ARM, so I might have the same issue.

Is the problem that macos-latest is indeed macOS-14? I was under the impression that macos-latest would not be an ARM platform.

nulano commented 1 week ago

https://github.com/actions/runner-images?tab=readme-ov-file#available-images shows macos-latest as being an ARM platform.

mikhailkoliada commented 1 week ago

Starting OS14 standard runners are going to be arm based, i.e. standard OS13 runner is intel but OS14 and further are the arm ones. As of macOS-latest, it is being transited from OS12 to OS14

marcprux commented 1 week ago

There are no plans to introduce macOS-14 intel standard runners as of now.

@mikhailkoliada This presents a problem for runners that need to build and test both iOS and Android apps (such as Flutter and React Native projects). They generally use the popular https://github.com/ReactiveCircus/android-emulator-runner action, but due to the inability to run nested virtualization on the macOS ARM runners, there is as of now no way to build and test projects on both an iOS simulator (which require macOS) and an Android emulator (which cannot be run on the ARM runners due to the lack of nested virtualization support).

This is also discussed at https://github.com/ReactiveCircus/android-emulator-runner/issues/350, and in the issues of a slew of other projects that are going to be stuck on the macos-13 runners until they age out, at which point they will be stranded.

Having a macOS-14 Intel standard runner would solve this problem.

str4d commented 1 week ago

The other issue is that, prior to now, all *-latest runners were x86_64. Switching macos-latest from x86_64 to ARM64 breaks a bunch of workflows that involve caching (e.g. https://github.com/actions/runner-images/issues/9732#issuecomment-2080020545), because the caching approaches that GitHub recommends (e.g. here) pattern-match on runner.os.

wmertens commented 1 week ago

Right, I think it would be better to either: