Skip to content

chore: prepare v0.3.2 release #1621

chore: prepare v0.3.2 release

chore: prepare v0.3.2 release #1621

Workflow file for this run

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@v5
- uses: subosito/flutter-action@v2
with:
cache: true
- name: "Get Flutter dependencies"
run: dart pub get
- name: Lint analysis
run: dart format --set-exit-if-changed .
lints-swift:
name: "[Swift] Check formatting"
runs-on: macos-latest
steps:
- uses: actions/checkout@v5
- name: "Install SwiftFormat"
run: brew install swiftformat
- name: "Format Swift code"
run: swiftformat --verbose --lint . --reporter github-actions-log --swiftversion 6 --indent 2 --disable trailingCommas
lint-dart:
name: "[Dart] Static code analysis"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- 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@v5
- 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@v5
# - 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: [ '' ] # option to use a matrix test with the lower supported flutter version
timeout-minutes: 30
defaults:
run:
working-directory: maplibre
steps:
- uses: actions/checkout@v5
- 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@v5
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: [ 24, 35 ]
# timeout-minutes: 30
# steps:
# - uses: actions/checkout@v5
# - name: "Setup Flutter SDK"
# uses: subosito/flutter-action@v2
# with:
# cache: true
# - uses: actions/setup-java@v5
# with:
# java-version: '21'
# 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@v5
# if: ${{ matrix.api-level == '35' }}
# 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@v5
# - 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/main.dart \
# -d web-server \
# --release \
# --browser-name=chrome
score:
name: "Package score"
runs-on: ubuntu-latest
defaults:
run:
working-directory: maplibre
steps:
- name: Checkout project
uses: actions/checkout@v5
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
cache: true
- name: Install pana
run: |
sudo apt-get install webp && \
dart pub global activate pana
- name: Check package score
run: pana --exit-code-threshold 10 --no-dartdoc .
build-android:
name: "[Android] Build APK"
runs-on: ubuntu-latest
defaults:
run:
working-directory: example
strategy:
fail-fast: false
matrix:
sdk: [ '' ] # option to use a matrix test with the lower supported flutter version
steps:
- uses: actions/checkout@v5
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ matrix.sdk }}
cache: true
- uses: actions/setup-java@v5
with:
java-version: '21'
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@v5
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: maplibre_ios/example
strategy:
fail-fast: false
matrix:
sdk: [ '' ] # option to use a matrix test with the lower supported flutter version
steps:
- uses: actions/checkout@v5
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ matrix.sdk }}
cache: true
- run: flutter config --enable-swift-package-manager
- name: "Get Flutter dependencies"
run: dart pub get
- name: "Build iOS package"
run: flutter build ios --release --no-codesign
- name: Upload Runner.app as artifact
if: ${{ matrix.sdk == '' }}
uses: actions/upload-artifact@v5
with:
name: maplibre-flutter-demo.app
path: build/ios/iphonesimulator
build-web:
name: "[Web] Build"
runs-on: ubuntu-latest
defaults:
run:
working-directory: example
strategy:
fail-fast: false
matrix:
sdk: [ '' ] # option to use a matrix test with the lower supported flutter version
steps:
- uses: actions/checkout@v5
- 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: [ '' ] # option to use a matrix test with the lower supported flutter version
steps:
- uses: actions/checkout@v5
- 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
codegen-pigeon:
name: "[Pigeon] Check codegen"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: subosito/flutter-action@v2
with:
cache: true
- name: "Get Flutter dependencies"
run: dart pub get
- name: Run pigeon
run: sh ./pigeons/run_code_gen.sh
- name: Format code
run: dart format .
- name: Check changes
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "❌ Uncommitted changes detected in files:"
git diff --name-only
exit 1
else
echo "✅ No uncommitted changes"
fi
codegen-android:
name: "[Android] Check codegen"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: subosito/flutter-action@v2
with:
cache: true
- uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'temurin'
cache: 'gradle'
- name: "Get Flutter dependencies"
run: dart pub get
- name: Build example APK
working-directory: example
run: flutter build apk
- name: Run jnigen
working-directory: maplibre
run: dart run tool/jnigen.dart
- name: Format code
run: dart format maplibre/lib/src/platform/android/jni.g.dart
- name: Check changes
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "❌ Uncommitted changes detected in files:"
git diff
exit 1
else
echo "✅ No uncommitted changes"
fi
# codegen-ios:
# name: "[iOS] Check codegen"
# runs-on: macos-latest
# timeout-minutes: 30
# strategy:
# fail-fast: false
# matrix:
# sdk: [ '' ] # option to use a matrix test with the lower supported flutter version
# steps:
# - uses: actions/checkout@v5
# - name: Clone maplibre-native with shallow submodules
# run: |
# git clone \
# --depth 1 \
# --filter=blob:none \
# --recurse-submodules \
# --shallow-submodules \
# --jobs 8 \
# https://github.com/maplibre/maplibre-native ../maplibre-native
# - uses: subosito/flutter-action@v2
# with:
# flutter-version: ${{ matrix.sdk }}
# cache: true
# - run: flutter config --enable-swift-package-manager
# - name: "Get Flutter dependencies"
# working-directory: maplibre_ios/example
# run: dart pub get
# - name: "Build iOS package"
# working-directory: maplibre_ios/example
# run: flutter build ios --release --no-codesign
# - name: Build MapLibre Native
# working-directory: maplibre_ios/ios
# run: ./build_maplibre.sh
# - name: Prepare ffigen
# run: echo TODO modify swift dependencies
# - name: Run ffigen
# working-directory: maplibre_ios
# run: dart run ffigen
# - name: Check changes
# run: |
# if [[ -n "$(git status --porcelain)" ]]; then
# echo "❌ Uncommitted changes detected in files:"
# git diff --name-only
# exit 1
# else
# echo "✅ No uncommitted changes"
# fi