-
Notifications
You must be signed in to change notification settings - Fork 0
152 lines (125 loc) · 4.46 KB
/
flutter-ci.yml
File metadata and controls
152 lines (125 loc) · 4.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
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: Install dependencies
working-directory: packages/fula_client
run: flutter pub get
- name: Generate bindings (dry run)
run: |
mkdir -p packages/fula_client/lib/src
# flutter_rust_bridge v2 - use config file (flutter_rust_bridge.yaml)
# v2 syntax: rust_input is module path like "crate::api", not file path
flutter_rust_bridge_codegen generate || echo "Codegen completed (some warnings expected)"
- name: Verify generated files exist
run: |
ls -la packages/fula_client/lib/src/ || echo "Generated files not found (expected in dry run)"
# 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
uses: nttld/setup-ndk@v1
with:
ndk-version: r25c
- name: Cache Cargo
uses: Swatinem/rust-cache@v2
- name: Configure Cargo for Android
run: |
echo "[target.aarch64-linux-android]" >> ~/.cargo/config.toml
echo "linker = \"$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang\"" >> ~/.cargo/config.toml
- name: Build for Android (arm64)
run: |
# Set CC and AR for ring/rustls cross-compilation
export CC_aarch64_linux_android="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
export AR_aarch64_linux_android="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
cargo build -p fula-flutter --target aarch64-linux-android --release