Share gradient stop calculations with Kotlin Multiplatform #2
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test Kotlin Multiplatform pilot | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| paths: | |
| - '.github/workflows/test-kmp.yml' | |
| - '.github/actions/setup-gradle/**' | |
| - '.github/actions/setup-xcode/**' | |
| - 'Gemfile' | |
| - 'Gemfile.lock' | |
| - 'settings.gradle.kts' | |
| - 'packages/react-native/ReactShared/**' | |
| - 'packages/react-native/ReactAndroid/build.gradle.kts' | |
| - 'packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/ColorStop.kt' | |
| - 'packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/style/ColorStopTest.kt' | |
| - 'packages/react-native/React/Fabric/Utils/RCTGradientUtils.*' | |
| - 'packages/react-native/React/Fabric/RCTConversions.h' | |
| - 'packages/react-native/React/React-RCTFabric.podspec' | |
| - 'packages/react-native/scripts/react_native_pods.rb' | |
| - 'packages/react-native/scripts/cocoapods/kmp.rb' | |
| - 'packages/react-native/Package.swift' | |
| - 'packages/react-native/package.json' | |
| - 'packages/react-native/settings.gradle.kts' | |
| push: | |
| branches: | |
| - main | |
| - '*-stable' | |
| paths: | |
| - '.github/workflows/test-kmp.yml' | |
| - '.github/actions/setup-gradle/**' | |
| - '.github/actions/setup-xcode/**' | |
| - 'Gemfile' | |
| - 'Gemfile.lock' | |
| - 'settings.gradle.kts' | |
| - 'packages/react-native/ReactShared/**' | |
| - 'packages/react-native/ReactAndroid/build.gradle.kts' | |
| - 'packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/ColorStop.kt' | |
| - 'packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/style/ColorStopTest.kt' | |
| - 'packages/react-native/React/Fabric/Utils/RCTGradientUtils.*' | |
| - 'packages/react-native/React/Fabric/RCTConversions.h' | |
| - 'packages/react-native/React/React-RCTFabric.podspec' | |
| - 'packages/react-native/scripts/react_native_pods.rb' | |
| - 'packages/react-native/scripts/cocoapods/kmp.rb' | |
| - 'packages/react-native/Package.swift' | |
| - 'packages/react-native/package.json' | |
| - 'packages/react-native/settings.gradle.kts' | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: kmp-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test-shared: | |
| runs-on: macos-26 | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: '17' | |
| distribution: 'zulu' | |
| - name: Set up Xcode for Kotlin Native | |
| uses: ./.github/actions/setup-xcode | |
| with: | |
| xcode-version: '26.4.1' | |
| - name: Set up Gradle | |
| uses: ./.github/actions/setup-gradle | |
| - name: Set up Ruby and CocoaPods | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.2.0' | |
| bundler-cache: true | |
| - name: Check CocoaPods linking configurations | |
| run: bundle exec ruby packages/react-native/ReactShared/scripts/test-cocoapods-linking.rb | |
| - name: Cache Kotlin Native toolchain | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.konan | |
| key: kmp-native-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('packages/react-native/ReactShared/*.gradle.kts', 'packages/react-native/ReactShared/gradle.properties', 'packages/react-native/ReactShared/gradle/wrapper/gradle-wrapper.properties') }} | |
| - name: Test shared code on JVM and iOS | |
| working-directory: packages/react-native/ReactShared | |
| run: >- | |
| ./gradlew | |
| jvmTest iosSimulatorArm64Test | |
| linkDebugFrameworkIosArm64 linkReleaseFrameworkIosArm64 | |
| linkDebugFrameworkIosSimulatorArm64 linkReleaseFrameworkIosSimulatorArm64 | |
| linkDebugFrameworkIosX64 linkReleaseFrameworkIosX64 | |
| --stacktrace --console=plain | |
| - name: Compare the Apple adapter with native gradients | |
| working-directory: packages/react-native/ReactShared | |
| run: ./scripts/test-apple-gradient.sh | |
| - name: Compare optimized Apple gradients | |
| working-directory: packages/react-native/ReactShared | |
| env: | |
| RCT_KMP_BUILD_TYPE: Release | |
| run: ./scripts/test-apple-gradient.sh | |
| - name: Upload test reports | |
| if: always() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: kotlin-multiplatform-test-results | |
| path: | | |
| packages/react-native/ReactShared/build/reports/tests | |
| packages/react-native/ReactShared/build/test-results | |
| if-no-files-found: warn |