Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 38 additions & 20 deletions .github/workflows/buildandtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ jobs:

job_test:
name: Test
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand All @@ -36,12 +36,12 @@ jobs:

job_lint:
name: Lint
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand All @@ -66,28 +66,46 @@ jobs:
clang --version
clang-format --version

- name: Install Swiftly
- name: Install Swiftly and Swift
run: |
SWIFTLY_FILE="swiftly-$(uname -m).tar.gz"
curl -sL https://download.swift.org/swiftly/linux/swiftly-x86_64.tar.gz -o $SWIFTLY_FILE
tar zxf $SWIFTLY_FILE
# Install Swift dependencies first
sudo apt-get update
sudo apt-get -y install libcurl4-openssl-dev libz3-dev

ARCH=$(uname -m)
SWIFTLY_FILE="swiftly-${ARCH}.tar.gz"
curl -sL "https://download.swift.org/swiftly/linux/swiftly-${ARCH}.tar.gz" -o "$SWIFTLY_FILE"
tar zxf "$SWIFTLY_FILE"

./swiftly init --quiet-shell-followup
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh"
hash -r
sudo apt-get -y install libcurl4-openssl-dev

# Install Swift 5.10 (compatible with SwiftLint 0.61.0)
swiftly install 5.10
swift --version

# Export Swift toolchain path for SwiftLint's SourceKit
# Dynamically determine the path from the swift binary location
SWIFT_BIN=$(which swift)
SWIFT_TOOLCHAIN=$(dirname $(dirname "$SWIFT_BIN"))
# Temp solution (todo(alwx): remove)
find "${SWIFT_TOOLCHAIN}" -name "libsourcekitdInProc.so" 2>/dev/null
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Temporary debug find command left in workflow

Low Severity

A temporary debug find command with the comment # Temp solution (todo(alwx): remove) was left in the "Install Swiftly and Swift" step. This diagnostic command searching for libsourcekitdInProc.so is not needed for the build and was explicitly marked for removal by the author.

Fix in Cursorย Fix in Web

echo "LINUX_SOURCEKIT_LIB_PATH=${SWIFT_TOOLCHAIN}/lib" >> $GITHUB_ENV

- name: Lint
run: yarn lint
run: |
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh"
yarn lint

job_check_integrity:
name: Check package integrity
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand All @@ -106,12 +124,12 @@ jobs:

job_build:
name: Build
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand Down Expand Up @@ -148,14 +166,14 @@ jobs:

job_type_check:
name: Type Check Typescript 3.8
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [job_build, diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
env:
YARN_ENABLE_IMMUTABLE_INSTALLS: false
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand All @@ -181,12 +199,12 @@ jobs:
run: yarn type-check
job_circular_dep_check:
name: Circular Dependency Check
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [job_build, diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand All @@ -210,7 +228,7 @@ jobs:

job_bundle:
name: Bundle
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [job_test, job_build, diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
strategy:
Expand All @@ -221,7 +239,7 @@ jobs:
dev: [true, false]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codegen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
uses: ./.github/workflows/skip-ci.yml

codegen:
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
strategy:
Expand All @@ -36,7 +36,7 @@ jobs:
--targetPlatform ios
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- run: npm i -g corepack
- run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/e2e-v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
name: iOS
appPlain: performance-tests/test-app-plain.ipa
- platform: android
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"]
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
name: Android
appPlain: performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk
steps:
Expand Down Expand Up @@ -205,7 +205,7 @@ jobs:
rn-version: '0.84.0'
runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:10"]
- platform: android
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"]
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can also revert the Android e2e, sample and expo-sample runners back to GH Ubuntu like 8ddab36 and see how this goes. The Cirrus lab runners are way faster but we may end up being queued if more thing run on them.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say we can keep them for e2e since the benifit is pretty significant there but maybe use GH Ubuntu for sample and expo sample. what do you think, @antonis ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good @alwx ๐Ÿ‘

exclude:
# exclude JSC for new RN versions (keeping the matrix manageable)
- rn-version: '0.84.0'
Expand Down Expand Up @@ -332,9 +332,9 @@ jobs:
include:
- platform: ios
rn-version: '0.84.0'
runs-on: macos-26
runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:10"]
- platform: android
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"]
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
Expand Down
20 changes: 17 additions & 3 deletions .github/workflows/native-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@ jobs:

test-ios:
name: ios
runs-on: macos-15
runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:10"]
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- name: Enable Corepack
run: npm i -g corepack
run: corepack enable
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand All @@ -44,6 +44,16 @@ jobs:
- name: Install SDK JS Dependencies
run: yarn install

- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3.0'
env:
# Disable rbenv to avoid .ruby-version conflicts
RBENV_VERSION: system

- name: Install CocoaPods
run: gem install cocoapods

- name: Install App Pods
working-directory: packages/core/RNSentryCocoaTester
run: pod install
Expand All @@ -56,6 +66,10 @@ jobs:
env:
SCHEME: RNSentryCocoaTester
CONFIGURATION: Release
# Fix for Xcode 26+ with MetalToolchain: use default Xcode toolchain to avoid
# missing Swift compatibility libraries (swiftCompatibility56, etc.)
# See: https://github.com/actions/runner-images/issues/13135
TOOLCHAINS: com.apple.dt.toolchain.XcodeDefault
run: |
# Find first available iPhone simulator from latest iOS runtime
DEVICE_ID=$(xcrun simctl list devices available iPhone -j | jq -r '
Expand Down Expand Up @@ -83,7 +97,7 @@ jobs:

test-android:
name: android
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ permissions:

jobs:
release:
runs-on: ubuntu-latest
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
name: Release a new version
steps:
- name: Get auth token
Expand All @@ -33,7 +33,7 @@ jobs:
token: ${{ steps.token.outputs.token }}
fetch-depth: 0

- run: npm i -g corepack
- run: corepack enable

- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
Expand Down
20 changes: 13 additions & 7 deletions .github/workflows/sample-application-expo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,25 @@ jobs:
build-type: ['dev', 'production']
include:
- platform: ios
runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:10"]
runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:10"]
- platform: android
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"]
runs-on: ubuntu-latest
- platform: web
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"]
runs-on: ubuntu-latest
exclude:
- platform: 'android'
ios-use-frameworks: 'dynamic-frameworks'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- name: Enable Corepack (NPM)
if: ${{ matrix.platform != 'ios' }}
run: npm i -g corepack

- name: Enable Corepack
if: ${{ matrix.platform == 'ios' }}
run: corepack enable

- name: Install Ninja
if: ${{ matrix.platform == 'android' }}
run: sudo apt-get update && sudo apt-get install -y ninja-build

- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand Down Expand Up @@ -125,6 +126,11 @@ jobs:
- name: Build iOS App
if: ${{ matrix.platform == 'ios' }}
working-directory: samples/expo/ios
env:
# Fix for Xcode 26+ with MetalToolchain: use default Xcode toolchain to avoid
# missing Swift compatibility libraries (swiftCompatibility56, etc.)
# See: https://github.com/actions/runner-images/issues/13135
TOOLCHAINS: com.apple.dt.toolchain.XcodeDefault
run: |
[[ "${{ matrix.build-type }}" == "production" ]] && CONFIG='Release' || CONFIG='Debug'
echo "Building $CONFIG"
Expand Down
29 changes: 18 additions & 11 deletions .github/workflows/sample-application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ jobs:
build-type: ['dev', 'production']
include:
- platform: ios
runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:10"]
runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:10"]
- platform: macos
runs-on: ["ghcr.io/cirruslabs/macos-sequoia-xcode:16.4", "runner_group_id:10"]
- platform: android
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:22.04", "runner_group_id:10"]
runs-on: ubuntu-latest
exclude:
- platform: 'android'
ios-use-frameworks: 'dynamic-frameworks'
Expand All @@ -69,13 +69,14 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- name: Enable Corepack (NPM)
if: ${{ matrix.platform == 'android' }}
run: npm i -g corepack

- name: Enable Corepack
if: ${{ matrix.platform != 'android' }}
run: corepack enable

- name: Install Ninja
if: ${{ matrix.platform == 'android' }}
run: sudo apt-get update && sudo apt-get install -y ninja-build

- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
Expand Down Expand Up @@ -135,6 +136,11 @@ jobs:
- name: Build iOS App
if: ${{ matrix.platform == 'ios' }}
working-directory: ${{ env.REACT_NATIVE_SAMPLE_PATH }}
env:
# Fix for Xcode 26+ with MetalToolchain: use default Xcode toolchain to avoid
# missing Swift compatibility libraries (swiftCompatibility56, etc.)
# See: https://github.com/actions/runner-images/issues/13135
TOOLCHAINS: com.apple.dt.toolchain.XcodeDefault
run: |
[[ "${{ matrix.build-type }}" == "production" ]] && export CONFIG='Release' || export CONFIG='Debug'

Expand Down Expand Up @@ -210,7 +216,7 @@ jobs:
matrix:
include:
- platform: ios
runs-on: macos-15
runs-on: ["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:10"]
rn-architecture: 'new'
ios-use-frameworks: 'no-frameworks'
build-type: 'production'
Expand All @@ -228,10 +234,6 @@ jobs:
with:
version: ${{env.MAESTRO_VERSION}}

- name: Install Ninja
if: ${{ matrix.platform == 'android' }}
run: sudo apt-get update && sudo apt-get install -y ninja-build

- name: Download iOS App Archive
if: ${{ matrix.platform == 'ios' }}
uses: actions/download-artifact@v7
Expand All @@ -258,7 +260,12 @@ jobs:
unzip ${{ env.ANDROID_APP_ARCHIVE_PATH }}
rm app-androidTest.apk

- name: Enable Corepack (NPM)
if: ${{ matrix.platform == 'android' }}
run: npm i -g corepack

- name: Enable Corepack
if: ${{ matrix.platform != 'android' }}
run: corepack enable

- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
Expand Down
Loading
Loading