Skip to content

Update ci.yml

Update ci.yml #367

Workflow file for this run

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 pub get
- name: Analyze
run: flutter analyze
ios:
needs: setup
timeout-minutes: 60
strategy:
matrix:
ios-version: [17.0, 16.0, 15.0, 14.0]
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
os_version: ${{ matrix.ios-version }}
- 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
flutter clean ./example
flutter pub get ./example
cd example
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]
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: 900
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back 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: 900
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back 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
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: 1200
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
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
flutter test integration_test/integration_test.dart --timeout none
pre-emulator-launch-script: |
adb kill-server
adb start-server