Running tests for Apple silicon on a GitHub CI workflow

Has anyone managed to include an Apple silicon instance in their GitHub CI test jobs?

I tried adding the following to a CI.yml:

jobs:
  test:
    name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        version:
          - '1.6'  # LTS
          - '1.8'  # latest stable
        os:
          - ubuntu-latest
        arch:
          - x64
        include:
+         - os: macOS-latest
+           version: 1.8.5
+           arch: arm64
          - os: macOS-latest
            version: 1.8.5
            arch: x64
          - os: windows-latest
            version: 1.8.5
            arch: x64

but I am getting the following error at the “Run julia-actions/setup-julia@v1” stage:

Run julia-actions/setup-julia@v1
  with:
    version: 1.8.5
    arch: arm64
    include-all-prereleases: false
    show-versioninfo: false
/usr/bin/tar xf /Users/runner/work/_temp/021514b2-c655-49e3-8e86-683d09bc27d0 --strip-components=1 -C julia-aarch64-1.8.5-2Xa2VM
/Users/runner/hostedtoolcache/julia/1.8.5/aarch64/bin/julia --version
node:internal/errors:465
    ErrorCaptureStackTrace(err);
    ^

Error: spawn Unknown system error -86
    at ChildProcess.spawn (node:internal/child_process:413:11)
    at Object.spawn (node:child_process:700:9)
    at ToolRunner.<anonymous> (/Users/runner/work/_actions/julia-actions/setup-julia/v1/dist/index.js:831:34)
    at Generator.next (<anonymous>)
    at /Users/runner/work/_actions/julia-actions/setup-julia/v1/dist/index.js:445:71
    at new Promise (<anonymous>)
    at module.exports.9.__awaiter (/Users/runner/work/_actions/julia-actions/setup-julia/v1/dist/index.js:441:12)
    at /Users/runner/work/_actions/julia-actions/setup-julia/v1/dist/index.js:813:53
    at new Promise (<anonymous>)
    at ToolRunner.<anonymous> (/Users/runner/work/_actions/julia-actions/setup-julia/v1/dist/index.js:813:20) {
  errno: -86,
  code: 'Unknown system error -86',
  syscall: 'spawn'
}

I tried doing a quick search, but I could only find Mosè’s post for Drone CI (here).

I don’t think Drone CI is free anymore (and it never offered apple silicon runners anyway). For M1 I’m currently using Cirrus, see for example Cuba.jl/.cirrus.yml at cbe9e3d7b810c99b9e15ad0336458c42ea9a4413 · giordano/Cuba.jl · GitHub

1 Like

It seems the Github hosted runners will support M-series chips eventually, but not yet:

I think this issue can be tracked for updates:

1 Like

I just came across that very same link from this blog post:

Apple silicon is on the way!

We’ve started racking up and testing out Apple silicon-based machines in the hosted runner data centers. Follow this roadmap item to track progress. We hope to be offering a limited beta in CY2023 depending on hardware availability, but keep your eyes on the GitHub blog for more information.

It seems to be scheduled for Q4 2023 – Oct-Dec on their roadmap.

Nice to know it’s on its way. Thank you, both! :tada:

1 Like