From 8b585103e91f37c5925afbf43847d19d06cf1b15 Mon Sep 17 00:00:00 2001 From: CI Date: Wed, 14 Jan 2026 11:50:10 +0100 Subject: [PATCH 1/8] ci: switch macos runners to cirrus --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 49fed207..9356fd81 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-review - ktlint_version: "1.5.0" + ktlint_version: '1.5.0' android: true lint: @@ -136,13 +136,13 @@ jobs: - name: Build example for Android env: - JAVA_OPTS: "-XX:MaxHeapSize=6g" + JAVA_OPTS: '-XX:MaxHeapSize=6g' TURBO_FORCE: ${{ steps.turbo-cache-android.outputs.cache-hit != 'true' }} run: | yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" build-ios: - runs-on: macos-latest + runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: XCODE_VERSION: 16.4 TURBO_CACHE_DIR: .turbo/ios @@ -210,7 +210,7 @@ jobs: test-harness-ios: if: false # TODO: re-enable once harness timeout issues are resolved - runs-on: macos-latest + runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: XCODE_VERSION: 16.4 steps: From 265b8eba7864fa51a6340d465fad3ba86fecf4b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 15 Jan 2026 06:58:22 +0100 Subject: [PATCH 2/8] ci: use Cirrus sonoma runner with Xcode 16.1, add harness retry on timeout --- .github/workflows/ci.yml | 42 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9356fd81..41377542 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,7 +144,7 @@ jobs: build-ios: runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: - XCODE_VERSION: 16.4 + XCODE_VERSION: 16.1 TURBO_CACHE_DIR: .turbo/ios steps: - name: Checkout @@ -209,10 +209,9 @@ jobs: yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" test-harness-ios: - if: false # TODO: re-enable once harness timeout issues are resolved runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: - XCODE_VERSION: 16.4 + XCODE_VERSION: 16.1 steps: - name: Checkout uses: actions/checkout@v4 @@ -263,6 +262,41 @@ jobs: - name: Install app on simulator run: xcrun simctl install booted example/ios/build/Build/Products/Debug-iphonesimulator/RiveExample.app + - name: Wait for simulator to be fully ready + run: | + echo "Waiting for simulator to be fully ready..." + sleep 10 + xcrun simctl list devices | grep Booted + - name: Run harness tests on iOS working-directory: example - run: yarn test:harness:ios --debug --verbose --testTimeout 120000 + run: | + # Retry up to 3 times only on timeout (exit code 124) + for attempt in 1 2 3; do + echo "=== Attempt $attempt of 3 ===" + set +e + timeout 180 yarn test:harness:ios --verbose --testTimeout 120000 + exit_code=$? + set -e + + echo "Exit code: $exit_code" + + if [ $exit_code -eq 0 ]; then + echo "Tests passed on attempt $attempt" + exit 0 + elif [ $exit_code -eq 124 ]; then + echo "Timeout on attempt $attempt, retrying..." + sleep 5 + else + echo "Tests failed with exit code $exit_code (not retrying)" + exit $exit_code + fi + done + echo "All attempts timed out" + exit 1 + + - name: Debug - Check for console logs + if: failure() + run: | + echo "=== Checking simulator logs for errors ===" + xcrun simctl spawn booted log show --predicate 'processImagePath CONTAINS "RiveExample"' --last 5m --style compact 2>&1 | tail -200 || echo "No logs found" From bca926defd26e828c41afa3c38d372271e13a82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 15 Jan 2026 10:31:41 +0100 Subject: [PATCH 3/8] ci: use xcodes to install Xcode 16.4 on Cirrus runners --- .github/workflows/ci.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41377542..8b1bd89a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,7 +144,7 @@ jobs: build-ios: runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: - XCODE_VERSION: 16.1 + XCODE_VERSION: 16.4 TURBO_CACHE_DIR: .turbo/ios steps: - name: Checkout @@ -170,11 +170,10 @@ jobs: echo "turbo_cache_hit=1" >> $GITHUB_ENV fi - - name: Use appropriate Xcode version + - name: Install Xcode 16.4 using xcodes if: env.turbo_cache_hit != 1 - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: ${{ env.XCODE_VERSION }} + run: | + xcodes install ${{ env.XCODE_VERSION }} --select --experimental-unxip - name: Restore cocoapods if: env.turbo_cache_hit != 1 @@ -211,7 +210,7 @@ jobs: test-harness-ios: runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: - XCODE_VERSION: 16.1 + XCODE_VERSION: 16.4 steps: - name: Checkout uses: actions/checkout@v4 @@ -219,10 +218,9 @@ jobs: - name: Setup uses: ./.github/actions/setup - - name: Use appropriate Xcode version - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: ${{ env.XCODE_VERSION }} + - name: Install Xcode 16.4 using xcodes + run: | + xcodes install ${{ env.XCODE_VERSION }} --select --experimental-unxip - name: Restore cocoapods id: cocoapods-cache From cfcf92eb8051bffd98b11fbe2dc0dcb6c8ef29c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 15 Jan 2026 10:46:52 +0100 Subject: [PATCH 4/8] ci: use sequoia runner with xcodes select for Xcode 16.4 --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8b1bd89a..b92369dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -142,7 +142,7 @@ jobs: yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" build-ios: - runs-on: ghcr.io/cirruslabs/macos-runner:sonoma + runs-on: ghcr.io/cirruslabs/macos-runner:sequoia env: XCODE_VERSION: 16.4 TURBO_CACHE_DIR: .turbo/ios @@ -170,10 +170,10 @@ jobs: echo "turbo_cache_hit=1" >> $GITHUB_ENV fi - - name: Install Xcode 16.4 using xcodes + - name: Select Xcode 16.4 if: env.turbo_cache_hit != 1 run: | - xcodes install ${{ env.XCODE_VERSION }} --select --experimental-unxip + xcodes select ${{ env.XCODE_VERSION }} - name: Restore cocoapods if: env.turbo_cache_hit != 1 @@ -208,7 +208,7 @@ jobs: yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" test-harness-ios: - runs-on: ghcr.io/cirruslabs/macos-runner:sonoma + runs-on: ghcr.io/cirruslabs/macos-runner:sequoia env: XCODE_VERSION: 16.4 steps: @@ -218,9 +218,9 @@ jobs: - name: Setup uses: ./.github/actions/setup - - name: Install Xcode 16.4 using xcodes + - name: Select Xcode 16.4 run: | - xcodes install ${{ env.XCODE_VERSION }} --select --experimental-unxip + xcodes select ${{ env.XCODE_VERSION }} - name: Restore cocoapods id: cocoapods-cache From d5af396e618e2bddc4e3c9f217d6bb9c77a4e613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 15 Jan 2026 12:49:40 +0100 Subject: [PATCH 5/8] ci: use macos-sequoia-xcode:16.4 image with Xcode pre-installed --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b92369dd..25534932 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -142,7 +142,7 @@ jobs: yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" build-ios: - runs-on: ghcr.io/cirruslabs/macos-runner:sequoia + runs-on: ghcr.io/cirruslabs/macos-sequoia-xcode:16.4 env: XCODE_VERSION: 16.4 TURBO_CACHE_DIR: .turbo/ios @@ -208,7 +208,7 @@ jobs: yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" test-harness-ios: - runs-on: ghcr.io/cirruslabs/macos-runner:sequoia + runs-on: ghcr.io/cirruslabs/macos-sequoia-xcode:16.4 env: XCODE_VERSION: 16.4 steps: From e94a276e98f016b85188f877f522a0f410cfb0bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 15 Jan 2026 12:57:39 +0100 Subject: [PATCH 6/8] ci: use sonoma runner with Xcode 16.1 and iOS 18.1 simulator --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25534932..09e0fcbc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -142,9 +142,9 @@ jobs: yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" build-ios: - runs-on: ghcr.io/cirruslabs/macos-sequoia-xcode:16.4 + runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: - XCODE_VERSION: 16.4 + XCODE_VERSION: 16.1 TURBO_CACHE_DIR: .turbo/ios steps: - name: Checkout @@ -208,9 +208,9 @@ jobs: yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" test-harness-ios: - runs-on: ghcr.io/cirruslabs/macos-sequoia-xcode:16.4 + runs-on: ghcr.io/cirruslabs/macos-runner:sonoma env: - XCODE_VERSION: 16.4 + XCODE_VERSION: 16.1 steps: - name: Checkout uses: actions/checkout@v4 @@ -255,7 +255,7 @@ jobs: uses: futureware-tech/simulator-action@v4 with: model: 'iPhone 16 Pro' - os_version: '18.6' + os_version: '18.1' - name: Install app on simulator run: xcrun simctl install booted example/ios/build/Build/Products/Debug-iphonesimulator/RiveExample.app From a320a847dca99986369125352ad488d6a108d33f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 15 Jan 2026 18:12:14 +0100 Subject: [PATCH 7/8] ci: fix timeout command not found on macOS --- .github/workflows/ci.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09e0fcbc..77fd9b0d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -170,7 +170,7 @@ jobs: echo "turbo_cache_hit=1" >> $GITHUB_ENV fi - - name: Select Xcode 16.4 + - name: Select Xcode version if: env.turbo_cache_hit != 1 run: | xcodes select ${{ env.XCODE_VERSION }} @@ -218,7 +218,7 @@ jobs: - name: Setup uses: ./.github/actions/setup - - name: Select Xcode 16.4 + - name: Select Xcode version run: | xcodes select ${{ env.XCODE_VERSION }} @@ -269,11 +269,11 @@ jobs: - name: Run harness tests on iOS working-directory: example run: | - # Retry up to 3 times only on timeout (exit code 124) + # Retry up to 3 times due to flaky harness connection for attempt in 1 2 3; do echo "=== Attempt $attempt of 3 ===" set +e - timeout 180 yarn test:harness:ios --verbose --testTimeout 120000 + yarn test:harness:ios --verbose --testTimeout 120000 exit_code=$? set -e @@ -282,15 +282,11 @@ jobs: if [ $exit_code -eq 0 ]; then echo "Tests passed on attempt $attempt" exit 0 - elif [ $exit_code -eq 124 ]; then - echo "Timeout on attempt $attempt, retrying..." - sleep 5 - else - echo "Tests failed with exit code $exit_code (not retrying)" - exit $exit_code fi + echo "Attempt $attempt failed, retrying..." + sleep 5 done - echo "All attempts timed out" + echo "All 3 attempts failed" exit 1 - name: Debug - Check for console logs From b2e735d6e970f08a5b1c492764ff7c0cbbd66935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Fri, 16 Jan 2026 07:57:59 +0100 Subject: [PATCH 8/8] ci: trigger new run