fluxa/.github/workflows/apple.yml
KhooLy 0860871297
Some checks failed
Apple / iOS simulator (push) Has been cancelled
Apple / tvOS simulator (push) Has been cancelled
Platform Verification / Android shared modules (push) Has been cancelled
Exclude the iOS-only plugin repository manager from tvOS, cache Rust on failure
FluxaApplePluginRepositoryManager.swift only has iOS callers and
references the iOS-only FluxaApplePluginsEffectHandler, so it fails to
compile for tvOS the same way the addon-store files already excluded
above do. Add it to the same exclude list.

Also set cache-on-failure on both Swatinem/rust-cache steps: since every
Apple CI run this session failed at a later step, the Rust build cache
was never saved, so each retry recompiled the whole dependency tree
(~15-25 min) from scratch instead of reusing what already built fine.
2026-07-20 18:05:43 +03:00

187 lines
5 KiB
YAML

name: Apple
on:
pull_request:
paths:
- ".github/workflows/apple.yml"
- "appleApp/**"
- "build-logic/**"
- "core/**"
- "data/**"
- "player/**"
- "shared/**"
- "gradle/**"
- "gradle.properties"
- "settings.gradle.kts"
- "build.gradle.kts"
push:
branches: [master]
paths:
- ".github/workflows/apple.yml"
- "appleApp/**"
- "build-logic/**"
- "core/**"
- "data/**"
- "player/**"
- "shared/**"
- "gradle/**"
- "gradle.properties"
- "settings.gradle.kts"
- "build.gradle.kts"
workflow_dispatch:
inputs:
fluxa_core_ref:
description: Fluxa Rust core ref to build
required: false
default: master
type: string
permissions:
contents: read
jobs:
ios:
name: iOS simulator
runs-on: macos-26
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: FluxaMedia/fluxa-core
path: fluxa-core
ref: ${{ inputs.fluxa_core_ref || 'master' }}
- name: Link sibling Rust core
run: ln -sfn "$GITHUB_WORKSPACE/fluxa-core" "$(dirname "$GITHUB_WORKSPACE")/fluxa-core"
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
- uses: gradle/actions/setup-gradle@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios,aarch64-apple-tvos,aarch64-apple-tvos-sim
- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: fluxa-core
cache-on-failure: true
- name: Set up XcodeGen
run: |
if ! command -v xcodegen >/dev/null; then
brew install xcodegen
fi
- name: Verify iOS shared code
run: >-
./gradlew --no-daemon
checkAppleTypedCatalogBridge
checkSharedPlayerBoundary
:core:linkIosSimulatorArm64
:data:compileIosMainKotlinMetadata
:player:compileIosMainKotlinMetadata
:shared:iosSimulatorArm64Test
- name: Verify Apple streaming bridge
working-directory: fluxa-core
run: cargo test -p fluxa_streaming_engine --no-default-features --features apple --lib
- name: Generate Apple host project
working-directory: appleApp
run: xcodegen generate
- name: Build Fluxa Rust core
env:
FLUXA_BUILD_STREAMING_ENGINE: "1"
run: appleApp/scripts/build-rust-core-xcframework.sh
- name: Build iOS host
run: >-
xcodebuild
-project appleApp/FluxaApple.xcodeproj
-scheme FluxaIos
-sdk iphonesimulator
-destination 'generic/platform=iOS Simulator'
ARCHS=arm64
CODE_SIGNING_ALLOWED=NO
build
tvos:
name: tvOS simulator
runs-on: macos-26
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: FluxaMedia/fluxa-core
path: fluxa-core
ref: ${{ inputs.fluxa_core_ref || 'master' }}
- name: Link sibling Rust core
run: ln -sfn "$GITHUB_WORKSPACE/fluxa-core" "$(dirname "$GITHUB_WORKSPACE")/fluxa-core"
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
- uses: gradle/actions/setup-gradle@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios,aarch64-apple-tvos,aarch64-apple-tvos-sim
- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: fluxa-core
cache-on-failure: true
- name: Set up XcodeGen
run: |
if ! command -v xcodegen >/dev/null; then
brew install xcodegen
fi
- name: Verify tvOS shared code
run: >-
./gradlew --no-daemon
checkAppleTvosKmpBoundary
checkSharedPlayerBoundary
:core:linkDebugFrameworkTvosSimulatorArm64
:data:linkDebugFrameworkTvosSimulatorArm64
:player:linkDebugFrameworkTvosSimulatorArm64
:core:tvosSimulatorArm64Test
:data:tvosSimulatorArm64Test
:player:tvosSimulatorArm64Test
- name: Generate Apple host project
working-directory: appleApp
run: xcodegen generate
- name: Build Fluxa Rust core
run: appleApp/scripts/build-rust-core-xcframework.sh
- name: Build tvOS host
run: >-
xcodebuild
-project appleApp/FluxaApple.xcodeproj
-scheme FluxaTvos
-sdk appletvsimulator
-destination 'generic/platform=tvOS Simulator'
ARCHS=arm64
CODE_SIGNING_ALLOWED=NO
build