build #12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Flutter CI | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'crates/fula-flutter/**' | |
| - 'crates/fula-client/**' | |
| - 'crates/fula-crypto/**' | |
| - 'packages/fula_client/**' | |
| - '.github/workflows/flutter-ci.yml' | |
| pull_request: | |
| paths: | |
| - 'crates/fula-flutter/**' | |
| - 'crates/fula-client/**' | |
| - 'crates/fula-crypto/**' | |
| - 'packages/fula_client/**' | |
| workflow_dispatch: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| # Run Rust tests for all related crates | |
| test-rust: | |
| name: Rust Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: "." | |
| - name: Run tests | |
| run: | | |
| cargo test -p fula-crypto --all-features | |
| cargo test -p fula-client --all-features | |
| cargo test -p fula-flutter | |
| # Verify WASM compilation | |
| test-wasm: | |
| name: WASM Build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build for WASM | |
| run: | | |
| cargo build -p fula-crypto --target wasm32-unknown-unknown --no-default-features --features wasm | |
| cargo build -p fula-client --target wasm32-unknown-unknown --no-default-features | |
| cargo build -p fula-flutter --target wasm32-unknown-unknown | |
| # Verify binding generation works | |
| test-codegen: | |
| name: Binding Generation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: '3.24.0' | |
| channel: 'stable' | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install flutter_rust_bridge_codegen | |
| run: cargo install flutter_rust_bridge_codegen | |
| - name: Clean old generated files | |
| run: | | |
| rm -f packages/fula_client/lib/src/frb_generated*.dart | |
| rm -f packages/fula_client/lib/src/api/*.freezed.dart | |
| - name: Install dependencies | |
| working-directory: packages/fula_client | |
| run: flutter pub get | |
| - name: Generate bindings | |
| run: | | |
| mkdir -p packages/fula_client/lib/src | |
| # flutter_rust_bridge v2 - use config file (flutter_rust_bridge.yaml) | |
| flutter_rust_bridge_codegen generate | |
| - name: Verify generated files | |
| run: | | |
| ls -la packages/fula_client/lib/src/ | |
| echo "=== Checking for wire methods ===" | |
| grep -c "wire__" packages/fula_client/lib/src/frb_generated.io.dart || echo "No wire methods in io.dart" | |
| # Check Flutter package structure | |
| check-flutter: | |
| name: Flutter Package Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: '3.24.0' | |
| channel: 'stable' | |
| - name: Check package | |
| working-directory: packages/fula_client | |
| run: | | |
| flutter pub get || echo "Dependencies not fully resolved (expected without generated bindings)" | |
| flutter analyze --no-fatal-infos || echo "Analysis completed with warnings" | |
| # Build Android native libraries (verification only) | |
| build-android-check: | |
| name: Android Build Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: aarch64-linux-android | |
| - name: Setup Android NDK | |
| id: setup-ndk | |
| uses: nttld/setup-ndk@v1 | |
| with: | |
| ndk-version: r25c | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Configure Cargo for Android | |
| run: | | |
| NDK_PATH="${{ steps.setup-ndk.outputs.ndk-path }}" | |
| echo "[target.aarch64-linux-android]" >> ~/.cargo/config.toml | |
| echo "linker = \"$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang\"" >> ~/.cargo/config.toml | |
| - name: Build for Android (arm64) | |
| run: | | |
| NDK_PATH="${{ steps.setup-ndk.outputs.ndk-path }}" | |
| # Set CC and AR for ring/rustls cross-compilation | |
| export CC_aarch64_linux_android="$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" | |
| export AR_aarch64_linux_android="$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" | |
| cargo build -p fula-flutter --target aarch64-linux-android --release |