actions / runner-images

GitHub Actions runner images
MIT License
9.75k stars 2.99k forks source link

No longer able to make VisionOS builds for Unity on macos-latest #10219

Open StephenHodgson opened 1 month ago

StephenHodgson commented 1 month ago

Description

Previously I had been able to make automated builds on macos-latest with arm64 arch, but recent changes seem to have broken this.

I get an error about FMOD trying to initialize but then failing the build after some timeout. I am able to make automated builds on my self hosted runner with the same tooling as the vanilla GitHub hosted runner.

Platforms affected

Runner images affected

Image version and build link

Current runner version: '2.317.0'
Operating System
  macOS
  14.5
  23F79
Runner Image
  Image: macos-14-arm64
  Version: 20240611.1
  Included Software: https://github.com/actions/runner-images/blob/macos-14-arm64/20240611.1/images/macos/macos-14-arm64-Readme.md
  Image Release: https://github.com/actions/runner-images/releases/tag/macos-14-arm64%2F20240611.1
Runner Image Provisioner
  2.0.370.1+55cddbb57f254a369b6e7b3b508cebdbee5d24be

Is it regression?

yes

Expected behavior

I can perform automated building with Unity Game Engine and Github Actions Runners for Vision OS platform

Actual behavior

FMOD failed to initialize the output device.: "A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted. " (57)
Forced to initialize FMOD to to the device driver's system output rate 44100, this may impact performance and/or give inconsistent experiences compared to selected sample rate 48000
FMOD failed to initialize the output device.: "A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted. " (57)
FMOD initialized on nosound output

Repro steps

See PR https://github.com/RageAgainstThePixel/unity-build/pull/8

  1. Create a new workflow using my Github Action as outlined in my repo readme.
  2. Create a Unity account if needed and set secrets:
    • UNITY_USERNAME
    • UNITY_PASSWORD
  3. Run the following workflow:
    
    name: unity-build-validation

on: push: branches:

concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true

jobs: build: runs-on: ${{ matrix.os }} strategy:

max-parallel: 2 # Use this if you're activating pro license with matrix

  fail-fast: false
  matrix:
    include:
      - os: ubuntu-latest
        build-target: StandaloneLinux64
      - os: windows-latest
        build-target: StandaloneWindows64
      - os: macos-latest
        build-target: StandaloneOSX

steps:
  - name: checkout self
    uses: actions/checkout@v4

  - name: checkout test project
    uses: actions/checkout@v4
    with:
      repository: RageAgainstThePixel/com.utilities.buildpipeine
      path: test-project

    # Installs the Unity Editor based on your project version text file
    # sets -> env.UNITY_EDITOR_PATH
    # sets -> env.UNITY_PROJECT_PATH
    # https://github.com/XRTK/unity-setup
  - uses: xrtk/unity-setup@v7
    with:
      build-targets: ${{ matrix.build-target }}
      version-file-path: 'test-project/**/ProjectSettings/ProjectVersion.txt'

    # Activates the installation with the provided credentials
    # https://github.com/XRTK/activate-unity-license
  - uses: xrtk/activate-unity-license@v5
    with:
      # Required
      username: ${{ secrets.UNITY_USERNAME }}
      password: ${{ secrets.UNITY_PASSWORD }}
      # Optional
      license-type: 'Personal' # Chooses license type to use [ Personal, Professional ]
      # serial: ${{ secrets.UNITY_SERIAL }} # Required for pro/plus activations

  - name: Unity Build (${{ matrix.build-target }})
    uses: ./ #RageAgainstThePixel/unity-build
    with:
      build-target: ${{ matrix.build-target }}

  - name: Unity Build No Tests (${{ matrix.build-target }})
    uses: ./ #RageAgainstThePixel/unity-build
    with:
      build-target: ${{ matrix.build-target }}
      test: false

  - name: Unity Build No Artifacts (${{ matrix.build-target }})
    uses: ./ #RageAgainstThePixel/unity-build
    with:
      build-target: ${{ matrix.build-target }}
      publish-artifacts: false
prasanjitsahoo commented 1 month ago

HI @StephenHodgson, We are looking in to this issue.

prasanjitsahoo commented 1 month ago

HI @StephenHodgson , We are facing below error when trying to reproduce your pipeline. Do you have any recommendation, how to workaround it.

Screenshot 2024-07-16 at 5 44 10 PM
StephenHodgson commented 1 month ago

HI @StephenHodgson , We are facing below error when trying to reproduce your pipeline. Do you have any recommendation, how to workaround it.

Try using the latest 2022.3 LTS version. 2019.4.40 doesn't support arm64 which is required for the VisionOS platform.

In my test in my latest run failure I was using 2021.3.15f1 but didn't expressly install vision os platform.

My previous release run was using macos-latest with arm64 support and passed.

StephenHodgson commented 1 month ago

@prasanjitsahoo I updated my dev branch to only test for macos and updated the editor to 2022.3 LTS

prasanjitsahoo commented 1 month ago

@prasanjitsahoo I updated my dev branch to only test for macos and updated the editor to 2022.3 LTS

Ok, we will continue to investigate and let you know.

prasanjitsahoo commented 1 month ago

Hi @StephenHodgson , I am getting Unity license Failure when trying to reproduce the issue. Any recommendation how to reproduce it without license. Attaching failure screenshot

Screenshot 2024-07-22 at 4 09 35 PM
StephenHodgson commented 1 month ago

Hi @StephenHodgson , I am getting Unity license Failure when trying to reproduce the issue. Any recommendation how to reproduce it without license. Attaching failure screenshot.

Sounds like the secrets are not set correctly?

You don't need a license, but you do need an account with unity.

Set the UNITY_USERNAME and UNITY_PASSWORD

If already set double check your values.

Username should be the email address of your account.

I removed the 2FA requirement to make it easier.

prasanjitsahoo commented 1 month ago

Hi @StephenHodgson , I am getting Unity license Failure when trying to reproduce the issue. Any recommendation how to reproduce it without license. Attaching failure screenshot.

Sounds like the secrets are not set correctly?

You don't need a license, but you do need an account with unity.

Set the UNITY_USERNAME and UNITY_PASSWORD

If already set double check your values.

Username should be the email address of your account.

I removed the 2FA requirement to make it easier.

Yes, I have created an UNITY account. Username and password also set to secrets correctly and after removed 2FA, facing same license failure issue

Screenshot 2024-07-23 at 1 59 51 PM
StephenHodgson commented 1 month ago

Yes, I have created an UNITY account. Username and password also set to secrets correctly and after removed 2FA, facing same license failure issue

Still seems like the secret credential itself might still be incorrect. Can you validate one more time you're using the same email and password to login at id.unity.com?

UNITY_USERNAME: your@email.com

Here are the results of my latest run if you're unable to repro https://github.com/RageAgainstThePixel/unity-build/actions/runs/9987084631/job/27796644967

prasanjitsahoo commented 1 month ago

HI @StephenHodgson , Thanks for your quick help on the challenges i faced. I can be able to run the pipelines now without the license and repro the issue. Meanwhile pipelines are getting succeeded now. I could see for your pipelines as well getting succeeded https://github.com/RageAgainstThePixel/unity-build/actions/runs/10057461498/job/27798459949. Attaching my screenshots for the same

Screenshot 2024-07-23 at 8 29 25 PM
StephenHodgson commented 1 month ago

Yes but 3 hrs on mac-latest seems like quite a long time compared to the mac-13 runner of 18 min

image

There may still be a misconfiguration issue on the runner image 🤔

image

I'm still getting these errors on mac-latest but not mac-13

FMOD failed to initialize the output device.: "A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted. " (57)
Forced to initialize FMOD to to the device driver's system output rate 44100, this may impact performance and/or give inconsistent experiences compared to selected sample rate 48000
FMOD failed to initialize the output device.: "A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted. " (57)
FMOD initialized on nosound output
StephenHodgson commented 1 month ago

Failed after I merged in release

https://github.com/RageAgainstThePixel/unity-build/actions/runs/10065195075/job/27823760428

prasanjitsahoo commented 1 month ago

Hi @StephenHodgson Please check now, it is getting passed twice for me today after latest deployment done.

Screenshot 2024-07-26 at 9 10 33 PM
StephenHodgson commented 1 month ago

Hi @StephenHodgson Please check now, it is getting passed twice for me today after latest deployment done.

I can still see from your screen shot that it's taking well over an hour for each step. Which seems like it is still broken.

The other builds take less than 20 min and macos-latest used to take roughly the same amount of time before it was broken.

See details in https://github.com/actions/runner-images/issues/10219#issuecomment-2245773763

prasanjitsahoo commented 1 month ago

Hi @StephenHodgson Please check now, it is getting passed twice for me today after latest deployment done.

I can still see from your screen shot that it's taking well over an hour for each step. Which seems like it is still broken.

The other builds take less than 20 min and macos-latest used to take roughly the same amount of time before it was broken.

See details in #10219 (comment)

Yes, We just observed that for arm based machine taking little longer as compared to intel based machine

prasanjitsahoo commented 3 weeks ago

Hi @StephenHodgson , We are aware of the issue and are working on it.

StephenHodgson commented 2 weeks ago

I updated my tests and GitHub actions to make repro easier: