- Add GitHub Actions workflows for CI, code quality, and release #3
This file contains hidden or 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: Flutter CI | |
on: | |
push: | |
branches: | |
- main | |
- develop | |
pull_request: | |
branches: | |
- main | |
- develop | |
jobs: | |
flutter_test: | |
name: Flutter Test and Analyze | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- name: Setup Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
flutter-version-file: pubspec.yaml | |
channel: 'stable' | |
cache: true | |
- name: Get dependencies | |
run: flutter pub get | |
- name: Check format | |
run: dart format --output=none --set-exit-if-changed . | |
- name: Analyze | |
run: flutter analyze | |
- name: Run tests | |
run: flutter test --coverage | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage/lcov.info | |
build_android: | |
name: Build Android App | |
runs-on: ubuntu-latest | |
needs: flutter_test | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- name: Setup Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
flutter-version-file: pubspec.yaml | |
channel: 'stable' | |
cache: true | |
- name: Get dependencies | |
run: flutter pub get | |
- name: Build APK | |
run: flutter build apk --release | |
- name: Build App Bundle | |
run: flutter build appbundle --release | |
- name: Upload APK as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-apk | |
path: build/app/outputs/flutter-apk/app-release.apk | |
- name: Upload App Bundle as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-appbundle | |
path: build/app/outputs/bundle/release/app-release.aab | |
build_ios: | |
name: Build iOS App | |
runs-on: macos-latest | |
needs: flutter_test | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
flutter-version-file: pubspec.yaml | |
channel: 'stable' | |
cache: true | |
- name: Get dependencies | |
run: flutter pub get | |
- name: Build iOS | |
run: flutter build ios --release --no-codesign | |
- name: Create IPA | |
run: | | |
cd build/ios/iphoneos | |
mkdir Payload | |
cp -r Runner.app Payload/ | |
zip -r app-release.ipa Payload/ | |
- name: Upload IPA as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-ipa | |
path: build/ios/iphoneos/app-release.ipa |