Skip to content

Commit

Permalink
Merge pull request #250 from natsuk4ze/optimiza-ci
Browse files Browse the repository at this point in the history
Update ci.yml
  • Loading branch information
natsuk4ze authored Dec 15, 2024
2 parents a51ccac + 52a88e4 commit 597c704
Show file tree
Hide file tree
Showing 5 changed files with 266 additions and 234 deletions.
242 changes: 8 additions & 234 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,266 +39,40 @@ jobs:
with:
filters: |
common:
- '**/ci.yml'
- '**/lib/**'
- '**/pubspec.yaml'
- '**/pubspec.lock'
windows:
- '**/windows/**'
- '**/ci_windows.yml'
macos:
- 'darwin/**'
- 'example/macos/**'
- '**/ci_macos.yml'
ios:
- 'darwin/**'
- 'example/ios/**'
- '**/ci_ios.yml'
android:
- '**/android/**'
- '**/ci_android.yml'
windows:
needs: filter
if: ${{ needs.filter.outputs.windows_changed == 'true' || needs.filter.outputs.common_changed == 'true' || inputs.run_all }}
runs-on: windows-latest
timeout-minutes: 30
strategy:
matrix:
windows-version: [10]
fail-fast: false
steps:
- name: Check out
uses: actions/checkout@v4

- name: Setup Flutter SDK
timeout-minutes: 10
uses: subosito/flutter-action@v2
with:
channel: stable

- name: Run integration tests
id: Run-integration-tests
timeout-minutes: 15
run: |
cd example
flutter test integration_test/integration_test.dart windows
uses: ./.github/workflows/ci_windows.yml

macos:
needs: filter
if: ${{ needs.filter.outputs.macos_changed == 'true' || needs.filter.outputs.common_changed == 'true' || inputs.run_all }}
runs-on: macos-${{ matrix.macos-version }}
timeout-minutes: 30
strategy:
matrix:
macos-version: [13, 14]
package_manager: [cocoapods, swiftpm]
fail-fast: false
steps:
- name: Check out
uses: actions/checkout@v4

- name: Setup Flutter SDK
timeout-minutes: 10
uses: subosito/flutter-action@v2
with:
channel: beta

- name: Set Package Manager Configuration
run: |
if [ "${{ matrix.package_manager }}" == "cocoapods" ]; then
flutter config --no-enable-swift-package-manager
else
flutter config --enable-swift-package-manager
fi
- name: Run integration tests
id: Run-integration-tests
timeout-minutes: 15
continue-on-error: true
run: |
cd example
flutter test -d macos integration_test/integration_test.dart macos
- name: Retry integration tests
if: steps.Run-integration-tests.outcome == 'failure'
timeout-minutes: 15
run: |
flutter clean && flutter pub get
cd example
flutter test -d macos integration_test/integration_test.dart macos
- name: Validate Podspec in CocoaPods
if: matrix.package_manager == 'cocoapods'
run: |
pod lib lint darwin/gal.podspec --configuration=Debug --skip-tests --use-modular-headers --use-libraries
pod lib lint darwin/gal.podspec --configuration=Debug --skip-tests --use-modular-headers
uses: ./.github/workflows/ci_macos.yml

ios:
needs: filter
if: ${{ needs.filter.outputs.ios_changed == 'true' || needs.filter.outputs.common_changed == 'true' || inputs.run_all }}
runs-on: macos-14
timeout-minutes: 60
strategy:
matrix:
ios-version: [17, 18]
package_manager: [cocoapods, swiftpm]
fail-fast: false
steps:
- name: Check out
uses: actions/checkout@v4

- name: Setup Flutter SDK
uses: subosito/flutter-action@v2
with:
channel: beta

- name: Boot iOS simulator
uses: futureware-tech/simulator-action@v4
with:
os: iOS
model: 'iPhone 15'
os_version: ^${{ matrix.ios-version }}

- name: Grant permission
run: |
brew tap wix/brew
brew install applesimutils
cd example
applesimutils --booted --bundle studio.midoridesign.galExample --setPermissions photos=YES
- name: Set Package Manager Configuration
run: |
if [ "${{ matrix.package_manager }}" == "cocoapods" ]; then
flutter config --no-enable-swift-package-manager
else
flutter config --enable-swift-package-manager
fi
- name: Run integration tests
id: Run-integration-tests
timeout-minutes: 15
continue-on-error: true
run: |
cd example
flutter test integration_test/integration_test.dart
- name: Retry integration tests
if: steps.Run-integration-tests.outcome == 'failure'
timeout-minutes: 15
run: |
flutter clean && flutter pub get
cd example
flutter test integration_test/integration_test.dart
- name: Validate Podspec in CocoaPods
if: matrix.package_manager == 'cocoapods'
run: |
pod lib lint darwin/gal.podspec --configuration=Debug --skip-tests --use-modular-headers --use-libraries
pod lib lint darwin/gal.podspec --configuration=Debug --skip-tests --use-modular-headers
- name: Clean Flutter
run: flutter clean
uses: ./.github/workflows/ci_ios.yml

android:
needs: filter
if: ${{ needs.filter.outputs.android_changed == 'true' || needs.filter.outputs.common_changed == 'true' || inputs.run_all }}
timeout-minutes: 60
runs-on: macos-13
strategy:
matrix:
api-level: [34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21]
fail-fast: false
steps:
- name: Check out
uses: actions/checkout@v4

- name: Setup Flutter SDK
uses: subosito/flutter-action@v2
with:
channel: beta

- name: Install Flutter dependencies
run: flutter pub get ./example

- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin

- name: Cache Gradle
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: gradle

- name: Cache AVD
uses: actions/cache@v4
id: cache-avd
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ matrix.api-level }}

- name: Run integration tests
id: Run-integration-tests
continue-on-error: true
timeout-minutes: 20
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
working-directory: ./example
arch: x86_64
emulator-boot-timeout: 200
disable-spellchecker: true
force-avd-creation: false
disk-size: 4GB
sdcard-path-or-size: ${{ matrix.api-level < 29 && '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; adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi
flutter test integration_test/integration_test.dart
- name: Retry integration tests
id: Retry-integration-tests
continue-on-error: true
timeout-minutes: 20
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: 200
disable-spellchecker: true
force-avd-creation: false
disk-size: 4GB
sdcard-path-or-size: ${{ matrix.api-level < 29 && '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; adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi
flutter test integration_test/integration_test.dart
- name: Re:Retry integration tests
if: steps.Retry-integration-tests.outcome == 'failure'
timeout-minutes: 20
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
working-directory: ./example
arch: x86_64
emulator-boot-timeout: 200
disable-spellchecker: true
force-avd-creation: false
disk-size: 4GB
sdcard-path-or-size: ${{ matrix.api-level < 29 && '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; adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi
flutter test integration_test/integration_test.dart
uses: ./.github/workflows/ci_android.yml
110 changes: 110 additions & 0 deletions .github/workflows/ci_android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Android Integration Tests

on:
workflow_call:

jobs:
android:
runs-on: macos-13
timeout-minutes: 60
strategy:
matrix:
api-level: [34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21]
fail-fast: false
steps:
- name: Check out
uses: actions/checkout@v4

- name: Setup Flutter SDK
uses: subosito/flutter-action@v2
with:
channel: beta

- name: Install Flutter dependencies
run: flutter pub get ./example

- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin

- name: Cache Gradle
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: gradle

- name: Cache AVD
uses: actions/cache@v4
id: cache-avd
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ matrix.api-level }}

- name: Run integration tests
id: Run-integration-tests
continue-on-error: true
timeout-minutes: 20
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
working-directory: ./example
arch: x86_64
emulator-boot-timeout: 200
disable-spellchecker: true
force-avd-creation: false
disk-size: 4GB
sdcard-path-or-size: ${{ matrix.api-level < 29 && '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; adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi
flutter test integration_test/integration_test.dart
- name: Retry integration tests
id: Retry-integration-tests
continue-on-error: true
timeout-minutes: 20
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: 200
disable-spellchecker: true
force-avd-creation: false
disk-size: 4GB
sdcard-path-or-size: ${{ matrix.api-level < 29 && '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; adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi
flutter test integration_test/integration_test.dart
- name: Re:Retry integration tests
if: steps.Retry-integration-tests.outcome == 'failure'
timeout-minutes: 20
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
working-directory: ./example
arch: x86_64
emulator-boot-timeout: 200
disable-spellchecker: true
force-avd-creation: false
disk-size: 4GB
sdcard-path-or-size: ${{ matrix.api-level < 29 && '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; adb shell pm grant studio.midoridesign.gal_example android.permission.READ_EXTERNAL_STORAGE; fi
flutter test integration_test/integration_test.dart
Loading

0 comments on commit 597c704

Please sign in to comment.