multi: add platform
directory, add MapScalebar
params, add more tests
#643
Workflow file for this run
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: CI | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
workflow_dispatch: | |
# Ensure that new pushes/updates cancel running jobs | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
format-dart: | |
name: "[Dart] Check formatting" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
- name: Lint analysis | |
run: dart format --set-exit-if-changed . | |
lint-dart: | |
name: "[Dart] Static code analysis" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
- name: "Get Flutter dependencies" | |
run: dart pub get | |
- name: Lint analysis | |
run: dart analyze --fatal-warnings --fatal-infos | |
lint-kotlin: | |
name: "[Kotlin] Code quality" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: ktlint | |
uses: ScaCap/action-ktlint@v1 | |
with: | |
github_token: ${{ secrets.github_token }} | |
reporter: github-pr-check | |
filter_mode: nofilter | |
file_glob: "!**/*.g.*" | |
fail_on_error: true | |
# integration-test-ios: | |
# name: "[iOS] Integration tests" | |
# runs-on: macOS-latest | |
# defaults: | |
# run: | |
# working-directory: example | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: futureware-tech/simulator-action@v3 | |
# with: | |
# model: 'iPhone 15' | |
# - uses: subosito/flutter-action@v2 | |
# with: | |
# cache: true | |
# - run: flutter pub get | |
# - run: flutter test integration_test --no-pub -r expanded | |
unit-test: | |
name: "Unit tests" | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
sdk: [ '3.24.0', '' ] | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Setup Flutter SDK" | |
uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
- name: "Get Flutter dependencies" | |
run: flutter pub get | |
- name: "Run unit tests" | |
run: flutter test --timeout=600s --coverage | |
- name: "Run Codecov" | |
uses: codecov/codecov-action@v4 | |
if: ${{ matrix.sdk == '' }} | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
integration-test-android: | |
name: "[Android] Integration tests" | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
api-level: [ 23, 34 ] # TODO: add 21 | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Setup Flutter SDK" | |
uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: "Get Flutter dependencies" | |
run: flutter pub get | |
# https://github.com/marketplace/actions/android-emulator-runner#running-hardware-accelerated-emulators-on-linux-runners | |
- name: "Enable KVM group perms" | |
run: | | |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
sudo udevadm control --reload-rules | |
sudo udevadm trigger --name-match=kvm | |
- name: "Run integration tests" | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
arch: x86_64 | |
emulator-boot-timeout: 1800 # 30 minutes | |
script: cd example && flutter test integration_test/main.dart --timeout=1800s -r expanded --coverage --coverage-package maplibre | |
- name: "Run Codecov" | |
uses: codecov/codecov-action@v4 | |
if: ${{ matrix.api-level == '34' }} | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
# integration-test-web: | |
# name: "[Web] Integration tests" | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 30 | |
# defaults: | |
# run: | |
# working-directory: example | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: "Setup Flutter SDK" | |
# uses: subosito/flutter-action@v2 | |
# with: | |
# cache: true | |
# - name: "Get Flutter dependencies" | |
# run: flutter pub get | |
# - name: "Start chromedriver" | |
# run: | | |
# sudo chromedriver --enable --port=4444 & | |
# - name: "Run integration tests" | |
# run: | | |
# flutter drive \ | |
# --driver=test_driver/integration_test.dart \ | |
# --target=integration_test/smoke_test.dart \ | |
# -d web-server \ | |
# --release \ | |
# --browser-name=chrome | |
score: | |
name: "Package score" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout project | |
uses: actions/checkout@v4 | |
- name: Setup Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
- name: Install pana | |
run: dart pub global activate pana | |
- name: Check package score | |
run: pana --exit-code-threshold 0 --no-dartdoc . | |
build-android: | |
name: "[Android] Build APK" | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: example | |
strategy: | |
fail-fast: false | |
matrix: | |
sdk: [ '3.24.0', '' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ matrix.sdk }} | |
cache: true | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
cache: 'gradle' | |
- name: "Get Flutter dependencies" | |
run: dart pub get | |
- name: Build example APK | |
run: flutter build apk | |
- name: Upload apk as artifact | |
uses: actions/upload-artifact@v4 | |
if: ${{ matrix.sdk == '' }} | |
with: | |
name: maplibre-flutter-demo.apk | |
path: example/build/app/outputs/flutter-apk/app-release.apk | |
# build-iOS: | |
# name: [iOS] Build package | |
# runs-on: macos-latest | |
# timeout-minutes: 30 | |
# defaults: | |
# run: | |
# working-directory: example | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# sdk: [ '3.24.0', '' ] | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: subosito/flutter-action@v2 | |
# with: | |
# flutter-version: ${{ matrix.sdk }} | |
# cache: true | |
# - uses: maxim-lobanov/setup-cocoapods@v1 | |
# with: | |
# podfile-path: example/ios/Podfile.lock | |
# - name: "Get Flutter dependencies" | |
# run: dart pub get | |
# - name: Build iOS package | |
# run: flutter build ios --simulator | |
# - name: Upload Runner.app as artifact | |
# if: ${{ matrix.sdk == '' }} | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: maplibre-flutter-demo.app | |
# path: example/build/ios/iphonesimulator | |
build-web: | |
name: "[Web] Build" | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: example | |
strategy: | |
fail-fast: false | |
matrix: | |
sdk: [ '3.24.0', '' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ matrix.sdk }} | |
cache: true | |
- name: "Get Flutter dependencies" | |
run: dart pub get | |
- name: Build web | |
run: flutter build web | |
build-web-wasm: | |
name: "[Web] Build WASM" | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: example | |
strategy: | |
fail-fast: false | |
matrix: | |
sdk: [ '3.24.0', '' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ matrix.sdk }} | |
cache: true | |
- name: "Get Flutter dependencies" | |
run: dart pub get | |
- name: Build web | |
run: flutter build web --wasm |