Merge pull request #60 from natsuk4ze/update-gitignore #418
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: | |
jobs: | |
cancel-outdated-runs: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
setup: | |
runs-on: macos-latest | |
steps: | |
- name: Check out | |
uses: actions/checkout@v3 | |
- name: Setup Flutter SDK | |
uses: subosito/flutter-action@v2 | |
with: | |
channel: beta | |
- name: Cache Flutter SDK | |
uses: actions/cache@v3 | |
with: | |
path: /opt/hostedtoolcache/Flutter | |
key: ${{ runner.os }}-flutter-${{ hashFiles('**/flutter/bin/cache/**') }}-${{ github.run_id }} | |
- name: Cache Flutter packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.pub-cache | |
key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}-${{ github.run_id }} | |
- name: Install packages | |
run: flutter --disable-telemetry && flutter clean && flutter pub get | |
- name: Analyze | |
run: flutter analyze | |
ios: | |
needs: setup | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: true | |
runs-on: macos-latest | |
steps: | |
- name: Check out | |
uses: actions/checkout@v3 | |
- name: Cache Flutter SDK | |
uses: actions/cache@v3 | |
with: | |
path: /opt/hostedtoolcache/Flutter | |
key: ${{ runner.os }}-flutter-${{ hashFiles('**/flutter/bin/cache/**') }}-${{ github.run_id }} | |
- name: Setup Flutter SDK | |
uses: subosito/flutter-action@v2 | |
with: | |
channel: beta | |
- name: Cache Flutter packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.pub-cache | |
key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}-${{ github.run_id }} | |
- name: Install Flutter dependencies | |
run: flutter pub get ./example | |
- uses: futureware-tech/simulator-action@v2 | |
with: | |
model: iPhone 14 Pro Max | |
- name: Build | |
timeout-minutes: 20 | |
run: | | |
cd example | |
flutter build ios --simulator --target=integration_test/integration_test.dart | |
- name: Run integration tests | |
id: Run-integration-tests | |
continue-on-error: true | |
timeout-minutes: 15 | |
run: | | |
cd example | |
flutter test integration_test/integration_test.dart --timeout none | |
- name: Retry integration tests | |
if: steps.Run-integration-tests.outcome == 'failure' | |
timeout-minutes: 20 | |
run: | | |
flutter clean && flutter pub get | |
cd example | |
flutter clean && flutter pub get | |
flutter test integration_test/integration_test.dart --timeout none | |
android: | |
needs: setup | |
timeout-minutes: 60 | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
api-level: [31,30,29,28,27,26,25,24,23,22,21] | |
fail-fast: false | |
steps: | |
- name: Check out | |
uses: actions/checkout@v3 | |
- name: Cache Flutter SDK | |
uses: actions/cache@v3 | |
with: | |
path: /opt/hostedtoolcache/Flutter | |
key: ${{ runner.os }}-flutter-${{ hashFiles('**/flutter/bin/cache/**') }}-${{ github.run_id }} | |
- name: Setup Flutter SDK | |
uses: subosito/flutter-action@v2 | |
with: | |
channel: beta | |
- name: Cache Flutter packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.pub-cache | |
key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}-${{ github.run_id }} | |
- name: Install Flutter dependencies | |
run: flutter pub get ./example | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 11 | |
distribution: temurin | |
cache: gradle | |
- name: AVD cache | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-${{ matrix.api-level }} | |
- name: Create AVD and generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
arch: x86_64 | |
emulator-boot-timeout: 600 | |
force-avd-creation: false | |
sdcard-path-or-size: ${{ matrix.api-level <= 23 && '10M' || null }} | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -camera-front none | |
script: echo "Generated AVD snapshot for caching." | |
- name: Run integration tests | |
id: Run-integration-tests | |
continue-on-error: true | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
working-directory: ./example | |
arch: x86_64 | |
emulator-boot-timeout: 300 | |
force-avd-creation: false | |
sdcard-path-or-size: ${{ matrix.api-level <= 23 && '10M' || null }} | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -camera-front none | |
script: | | |
if [ ${{ matrix.api-level }} -le 29 ]; then flutter build apk --debug; adb install -r build/app/outputs/flutter-apk/app-debug.apk; adb shell pm grant studio.midoridesign.gal_example android.permission.WRITE_EXTERNAL_STORAGE; fi | |
if [ ${{ matrix.api-level }} -le 23 ]; then adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi | |
flutter test integration_test/integration_test.dart --timeout none | |
- name: Retry integration tests | |
if: steps.Run-integration-tests.outcome == 'failure' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ matrix.api-level }} | |
working-directory: ./example | |
arch: x86_64 | |
emulator-boot-timeout: 600 | |
force-avd-creation: false | |
sdcard-path-or-size: ${{ matrix.api-level <= 23 && '10M' || null }} | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -camera-front none | |
pre-emulator-launch-script: | | |
adb kill-server | |
adb start-server | |
script: | | |
flutter clean && flutter pub get | |
if [ ${{ matrix.api-level }} -le 29 ]; then flutter build apk --debug; adb install -r build/app/outputs/flutter-apk/app-debug.apk; adb shell pm grant studio.midoridesign.gal_example android.permission.WRITE_EXTERNAL_STORAGE; fi | |
if [ ${{ matrix.api-level }} -le 23 ]; then adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi | |
flutter test integration_test/integration_test.dart --timeout none |