runner-images icon indicating copy to clipboard operation
runner-images copied to clipboard

macOS 14 arm64 (20250527) Image Update -- simulator fail

Open salami opened this issue 6 months ago • 4 comments

Description

I am using macos-latest image and my tests that run simulator are hanging after the update from macOS 14.7.5 to macOS 14.7.6 ...

Platforms affected

  • [ ] Azure DevOps
  • [x] GitHub Actions - Standard Runners
  • [ ] GitHub Actions - Larger Runners

Runner images affected

  • [ ] Ubuntu 22.04
  • [ ] Ubuntu 24.04
  • [ ] macOS 13
  • [ ] macOS 13 Arm64
  • [x] macOS 14
  • [x] macOS 14 Arm64
  • [x] macOS 15
  • [ ] macOS 15 Arm64
  • [ ] Windows Server 2019
  • [ ] Windows Server 2022
  • [ ] Windows Server 2025

Image version and build link

https://github.com/actions/runner-images/releases/tag/macos-14-arm64%2F20250527.1547

Is it regression?

https://github.com/actions/runner-images/releases/tag/macos-14%2F20250513.1230

Expected behavior

simulator should launch...

Actual behavior

it just hangs

Repro steps

from claude

Title: "xcodebuild test-without-building hangs in macos-14-arm64/20250527.1547" Working version: 20250505.1431 Broken version: 20250527.1547 Evidence: Simulator boots fine but xcodebuild never proceeds to test execution

salami avatar Jun 04 '25 02:06 salami

macos 15 latest failed too. I'm using xcode 16.2. Going to try 16.3

salami avatar Jun 04 '25 02:06 salami

Hi @salami - We will start investigating on this issue and will update you accordingly. Can you please share the workflow run you have tried for this issue.

archita105 avatar Jun 04 '25 05:06 archita105

It fails on the xcodebuild test-without-building step. The output shows this and then no more output:

--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:iOS Simulator, arch:arm64, id:3C9294A3-76A1-49A2-B43C-8E7A4B32AA23, OS:18.2, name:iPhone 16 }
{ platform:iOS Simulator, arch:x86_64, id:3C9294A3-76A1-49A2-B43C-8E7A4B32AA23, OS:18.2, name:iPhone 16 }

workflow:

name: Manual UI Tests
on:
  workflow_call:
    inputs:
      branch:
        description: 'sdk branch'
        required: true
        type: string
      revision:
        description: 'sdk commit SHA (optional - will fetch latest if not provided)'
        required: false
        type: string
  workflow_dispatch:
    inputs:
      branch:
        description: 'sdk branch'
        required: true
        default: 'main'
        type: string

jobs:
  run-tests:
    runs-on: macos-15 # or macos-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Get latest revision if not provided
        id: get-rev
        if: ${{ !inputs.revision }}
        run: |
          REVISION=$(git ls-remote https://github.com/private-org/private-repo ${{ inputs.branch }} | cut -f 1)
          echo "revision=$REVISION" >> $GITHUB_OUTPUT
          echo "Latest revision for branch ${{ inputs.branch }}: $REVISION"
      
      - name: Update sdk requirement in pbxproj to use specified branch and commit
        run: |
          # Use provided revision or fetched revision
          REVISION="${{ inputs.revision || steps.get-rev.outputs.revision }}"
          
          # Find pbxproj file path
          PBXPROJ_PATH=./testproject.xcodeproj/project.pbxproj
          
          # Use sed to replace branch requirement with exact revision
          perl -i -0pe 's/(repositoryURL = "https:\/\/github.com\/private-org\/private-repo";\s*requirement = \{)[^}]*(};)/\1\n\t\t\t\trevision = "'$REVISION'";\n\t\t\t\tkind = revision;\n\t\t\t\2/s' "$PBXPROJ_PATH"
          
          # Output changes
          grep -A5 "private-org/private-repo" "$PBXPROJ_PATH";
      
      - name: Setup Xcode
        uses: maxim-lobanov/setup-xcode@v1
        with:
          xcode-version: '16.3' # or 16.2

      - name: Check Xcode version
        run: xcodebuild -version
      
      - name: Build project
        run: |
          xcodebuild build-for-testing \
            -workspace testproject.xcworkspace \
            -scheme "testproject" \
            -destination "platform=iOS Simulator,name=iPhone 16,OS=18.2" \
            CODE_SIGN_IDENTITY="" \
            CODE_SIGNING_REQUIRED=NO \
            -allowProvisioningUpdates
            
      - name: Run tests with retry logic
        run: |
          # Function to run tests
          run_tests() {
            xcodebuild test-without-building \
              -workspace testproject.xcworkspace \
              -scheme "testproject" \
              -testPlan "testproject" \
              -destination "platform=iOS Simulator,name=iPhone 16,OS=18.2" \
              -disableAutomaticPackageResolution \
              -skipPackageUpdates \
              CODE_SIGN_IDENTITY="" \
              CODE_SIGNING_REQUIRED=NO
          }
          
          # Retry logic with 3 attempts
          for attempt in {1..3}; do
            echo "Test attempt $attempt of 3..."
            
            if run_tests; then
              echo "✅ Tests passed on attempt $attempt"
              exit 0
            else
              echo "❌ Tests failed on attempt $attempt"
            
              if [ $attempt -eq 3 ]; then
                echo "All test attempts failed"
                exit 1
              else
                echo "Retrying in 10 seconds..."
                sleep 10
              fi
            fi
          done
      
      - name: Collect test results and logs
        if: always()
        run: |
          echo "=== Test Results Summary ==="
          find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult" -type d | head -5
          
          # Find the most recent test result bundle
          LATEST_RESULT=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult" -type d | sort -t/ -k9 -r | head -1)
          
          if [ -n "$LATEST_RESULT" ]; then
            echo "Latest test result: $LATEST_RESULT"
            
            # Extract test summary (if xcrun supports it)
            if command -v xcrun >/dev/null 2>&1; then
              echo "=== Test Summary ==="
              xcrun xcresulttool get test-results summary --path "$LATEST_RESULT" || echo "Could not extract test summary"
            fi
          fi
          
      - name: Upload xcresult bundle
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: test-results-xcresult
          path: |
            ~/Library/Developer/Xcode/DerivedData/**/**.xcresult
          retention-days: 3

salami avatar Jun 04 '25 15:06 salami

Is there any way I can do a run using macOS 14.7.5 ? That way we could know for sure whether this is the difference between successful and failed runs.

salami avatar Jun 04 '25 15:06 salami

Hi @salami , I have executed your workflow on macOS-15 and macOS-14 runner images. All runs completed successfully within 5-10 minutes. Please find the execution results and the corresponding test-result for xcodebuild test-without-building step attached for your review.

Image

Image

Image

archita105 avatar Jun 06 '25 07:06 archita105

Thank you for investigating. I just ran it again, and... it WORKED! I don't know what happened... maybe things were taking longer than normal and I just didn't wait long enough. Not sure.

In any case I really appreciate you taking the time to run through this. Hopefully all is good now! Thanks!

salami avatar Jun 09 '25 03:06 salami