name: Build check on: pull_request: types: [opened, synchronize, reopened, ready_for_review] # Cancel superseded runs on the same PR. concurrency: group: build-check-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: android: name: Android (compile) runs-on: ubuntu-latest timeout-minutes: 45 steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 1 - name: Set up JDK 17 uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - name: Make gradlew executable run: chmod +x ./gradlew - name: Compile Android (full + playstore, debug) run: ./gradlew :composeApp:assembleFullDebug :composeApp:assemblePlaystoreDebug --stacktrace ios: name: iOS (compile) runs-on: macos-15 timeout-minutes: 60 env: NUVIO_IOS_DISTRIBUTION: full steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 1 - name: Set up JDK 17 uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - name: Select latest stable Xcode uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: latest-stable - name: Make gradlew executable run: chmod +x ./gradlew # Both iOS distributions (appstore / full) swap source dirs and deps, # so each must be type-checked independently. - name: Compile shared Kotlin/Native (appstore distribution) run: ./gradlew :composeApp:compileKotlinIosArm64 :composeApp:compileKotlinIosSimulatorArm64 -Pnuvio.ios.distribution=appstore --stacktrace - name: Compile shared Kotlin/Native (full distribution) run: ./gradlew :composeApp:compileKotlinIosArm64 :composeApp:compileKotlinIosSimulatorArm64 -Pnuvio.ios.distribution=full --stacktrace - name: Build iOS app (Debug, simulator destination, unsigned) run: | set -euo pipefail xcodebuild \ -project iosApp/iosApp.xcodeproj \ -scheme iosApp \ -configuration Debug \ -destination 'generic/platform=iOS Simulator' \ -derivedDataPath build/ios-derived-pr \ -skipPackagePluginValidation \ -skipMacroValidation \ CODE_SIGNING_ALLOWED=NO \ CODE_SIGNING_REQUIRED=NO \ CODE_SIGN_IDENTITY="" \ DEVELOPMENT_TEAM="" \ build # Desktop targets (macOS .dmg, Windows .exe, Linux) are not yet wired up in # composeApp/build.gradle.kts. Add a `jvm("desktop")` target with the Compose # Desktop plugin and matching `desktop` matrix jobs here once that lands.