NuvioStreaming/.github/workflows/build-check.yml
2026-05-12 12:03:06 +02:00

99 lines
3 KiB
YAML

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.