Skip to content

Share gradient stop calculations with Kotlin Multiplatform #1

Share gradient stop calculations with Kotlin Multiplatform

Share gradient stop calculations with Kotlin Multiplatform #1

Workflow file for this run

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/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/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