mirror of
https://github.com/FluxaMedia/fluxa.git
synced 2026-07-27 12:22:12 +00:00
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.
187 lines
5 KiB
YAML
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
|