Skip to content

Simplify Android and iOS build workflows in CI #10

Simplify Android and iOS build workflows in CI

Simplify Android and iOS build workflows in CI #10

Workflow file for this run

name: CI
on:
push:
branches: [ main, ohos-main ]
pull_request:
branches: [ main, ohos-main ]
jobs:
lint:
name: Lint & Analyze
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.38.7'
channel: 'stable'
cache: true
- name: Install melos
run: dart pub global activate melos
- name: Add melos to PATH
run: echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
- name: Verify melos installation
run: dart pub global run melos --version
- name: Bootstrap melos
run: dart pub global run melos bootstrap
- name: Check code formatting
run: dart pub global run melos run format
- name: Analyze code
run: dart pub global run melos run analyze
test:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.38.7'
channel: 'stable'
cache: true
- name: Install melos
run: dart pub global activate melos
- name: Add melos to PATH
shell: bash
run: |
if [[ "$RUNNER_OS" == "Windows" ]]; then
echo "$USERPROFILE/.pub-cache/bin" >> $GITHUB_PATH
else
echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
fi
- name: Verify melos installation
run: dart pub global run melos --version
- name: Bootstrap melos
run: dart pub global run melos bootstrap
- name: Run tests
run: dart pub global run melos run test
# Android build
build-android:
name: Build Android
runs-on: ubuntu-latest
needs: [lint]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.38.7'
channel: 'stable'
cache: true
- name: Install melos
run: dart pub global activate melos
- name: Add melos to PATH
run: echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
- name: Bootstrap melos
run: dart pub global run melos bootstrap
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Build cnativeapi example Android
run: |
cd packages/cnativeapi/example
flutter build apk --release
- name: Build nativeapi example Android
run: |
cd packages/nativeapi/example
flutter build apk --release
# iOS build
build-ios:
name: Build iOS
runs-on: macos-latest
needs: [lint]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.38.7'
channel: 'stable'
cache: true
- name: Install melos
run: dart pub global activate melos
- name: Add melos to PATH
run: echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
- name: Bootstrap melos
run: dart pub global run melos bootstrap
- name: Build cnativeapi example iOS
run: |
cd packages/cnativeapi/example
flutter build ios --release --no-codesign
- name: Build nativeapi example iOS
run: |
cd packages/nativeapi/example
flutter build ios --release --no-codesign
# Linux build
build-linux:
name: Build Linux
runs-on: ubuntu-latest
needs: [lint]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.38.7'
channel: 'stable'
cache: true
- name: Install melos
run: dart pub global activate melos
- name: Add melos to PATH
run: echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
- name: Bootstrap melos
run: dart pub global run melos bootstrap
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgtk-3-dev \
libblkid-dev \
liblzma-dev \
pkg-config \
cmake \
ninja-build \
clang \
libayatana-appindicator3-dev
- name: Build cnativeapi example Linux
run: |
cd packages/cnativeapi/example
flutter build linux --release
- name: Build nativeapi example Linux
run: |
cd packages/nativeapi/example
flutter build linux --release
# macOS build
build-macos:
name: Build macOS
runs-on: macos-latest
needs: [lint]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.38.7'
channel: 'stable'
cache: true
- name: Install melos
run: dart pub global activate melos
- name: Add melos to PATH
run: echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
- name: Bootstrap melos
run: dart pub global run melos bootstrap
- name: Build cnativeapi example macOS
run: |
cd packages/cnativeapi/example
flutter build macos --release
- name: Build nativeapi example macOS
run: |
cd packages/nativeapi/example
flutter build macos --release
# Windows build
build-windows:
name: Build Windows
runs-on: windows-latest
needs: [lint]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.38.7'
channel: 'stable'
cache: true
- name: Install melos
run: dart pub global activate melos
- name: Add melos to PATH
shell: bash
run: echo "$USERPROFILE/.pub-cache/bin" >> $GITHUB_PATH
- name: Bootstrap melos
run: dart pub global run melos bootstrap
- name: Build cnativeapi example Windows
run: |
cd packages/cnativeapi/example
flutter build windows --release
- name: Build nativeapi example Windows
run: |
cd packages/nativeapi/example
flutter build windows --release