Build & Test #1492
This file contains 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: Build & Test | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
schedule: | |
# runs the CI everyday at 10AM | |
- cron: "0 10 * * *" | |
jobs: | |
# General build, check, and test steps | |
build_and_test: | |
runs-on: ubuntu-latest | |
steps: | |
# Setup | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
- uses: bluefireteam/melos-action@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
components: rustfmt, clippy | |
# Rust | |
- name: Check Rust format | |
working-directory: ./packages/mimir/native/src | |
run: rustfmt --check lib.rs | |
- name: Rust code analysis | |
run: cargo clippy -- -D warnings | |
- name: Run Rust tests | |
run: cargo test | |
- name: Build Rust code (embedded_milli) for Dart tests | |
run: cargo build -r | |
# Dart/Flutter | |
- name: Check Dart format | |
run: melos format --set-exit-if-changed | |
- name: Dart code analysis | |
run: melos analyze | |
- name: Run Dart tests | |
run: melos run test | |
macos_integration_test: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
- uses: bluefireteam/melos-action@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
- name: Build the XCFramework | |
run: melos run build:apple | |
- name: Copy the XCFramework to the needed location | |
run: | | |
CURR_VERSION=mimir-v`awk '/^version: /{print $2}' packages/mimir/pubspec.yaml` | |
cp platform-build/EmbeddedMilli.xcframework.zip packages/flutter_mimir/macos/Frameworks/$CURR_VERSION.zip | |
echo Copied file! | |
rm -rf target/ platform-build/ # free up some space on the runner | |
- name: Run Flutter integration tests | |
working-directory: packages/flutter_mimir/example | |
run: flutter test -d macos integration_test | |
windows_integration_test: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
- uses: bluefireteam/melos-action@v2 | |
- uses: KyleMayes/install-llvm-action@v1 | |
with: | |
version: "15" | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
- name: Build the binaries | |
run: dart pub global run melos run build:other | |
shell: bash | |
- name: Copy the binaries to the needed location | |
shell: bash | |
run: | | |
CURR_VERSION=mimir-v`awk '/^version: /{print $2}' packages/mimir/pubspec.yaml` | |
cp platform-build/EmbeddedMilli.tar.gz packages/flutter_mimir/windows/$CURR_VERSION.tar.gz | |
echo Copied file! | |
rm -rf target/ platform-build/ # free up some space on the runner | |
- name: Run Flutter integration tests | |
working-directory: packages/flutter_mimir/example | |
run: flutter test -d windows integration_test | |
linux_integration_test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies for flutter integration test | |
run: sudo apt update && sudo apt-get install -y libglu1-mesa ninja-build clang cmake pkg-config libgtk-3-dev liblzma-dev | |
- uses: pyvista/setup-headless-display-action@v1 | |
- uses: subosito/flutter-action@v2 | |
- uses: bluefireteam/melos-action@v2 | |
- uses: mlugg/setup-zig@v1 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
- name: Build the binaries | |
run: melos run build:other | |
- name: Copy the binaries to the needed location | |
run: | | |
CURR_VERSION=mimir-v`awk '/^version: /{print $2}' packages/mimir/pubspec.yaml` | |
cp platform-build/EmbeddedMilli.tar.gz packages/flutter_mimir/linux/$CURR_VERSION.tar.gz | |
echo Copied file! | |
rm -rf target/ platform-build/ # free up some space on the runner | |
- name: Run Flutter integration tests | |
working-directory: packages/flutter_mimir/example | |
run: flutter test -d linux integration_test | |
ios_integration_test: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
- uses: bluefireteam/melos-action@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
- name: Build the XCFramework | |
run: melos run build:apple | |
- name: Copy the XCFramework to the needed location | |
run: | | |
CURR_VERSION=mimir-v`awk '/^version: /{print $2}' packages/mimir/pubspec.yaml` | |
cp platform-build/EmbeddedMilli.xcframework.zip packages/flutter_mimir/ios/Frameworks/$CURR_VERSION.zip | |
echo Copied file! | |
rm -rf target/ platform-build/ # free up some space on the runner | |
- uses: futureware-tech/simulator-action@v3 | |
id: start_simulator | |
name: Start iOS Simulator | |
with: | |
model: 'iPhone 15' | |
- name: Run Flutter integration tests | |
working-directory: packages/flutter_mimir/example | |
run: flutter test -d ${{ steps.start_simulator.outputs.udid }} integration_test | |
android_integration_test: | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
- uses: bluefireteam/melos-action@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
- uses: nttld/setup-ndk@v1 | |
with: | |
ndk-version: r25b | |
- uses: actions/setup-java@v3 | |
with: | |
distribution: zulu | |
java-version: "17.x" | |
- name: Build the binaries | |
run: melos run build:android | |
- name: Copy the binaries to the needed location | |
run: | | |
CURR_VERSION=mimir-v`awk '/^version: /{print $2}' packages/mimir/pubspec.yaml` | |
cp platform-build/EmbeddedMilliAndroid.tar.gz packages/flutter_mimir/android/$CURR_VERSION.tar.gz | |
echo Copied file! | |
rm -rf target/ platform-build/ # free up some space on the runner | |
- name: Run Flutter integration tests | |
uses: Wandalen/wretry.action@v1.0.36 # sometimes android tests are flaky | |
with: | |
attempt_limit: 5 | |
action: reactivecircus/android-emulator-runner@v2 | |
with: | | |
api-level: 33 | |
target: google_apis | |
arch: x86_64 | |
ram-size: 1024M | |
disk-size: 2048M | |
script: cd packages/flutter_mimir/example && flutter test -d `flutter devices | grep android | tr ' ' '\n' | grep emulator-` integration_test |