11name : Flutter Workflow
22
33on :
4- # push:
54 pull_request :
6- # Sequence of patterns matched against refs/heads
7- branches :
5+ branches :
86 - main
97 - master
8+
109permissions : read-all
10+
1111jobs :
12- build :
13- runs-on : ubuntu-latest
12+ build-and-release :
13+ runs-on : ${{ (github.event.pull_request.head.repo.full_name == github.repository) && 'self-hosted' || 'ubuntu-latest' }}
14+
1415 permissions :
1516 contents : write
17+
1618 steps :
17- - name : Checkout code
18- uses : actions/checkout@v3
19- - uses : actions/setup-java@v3
19+ - uses : actions/checkout@v4
20+
21+ - name : Setup Java (Only on GitHub Runners)
22+ if : " !contains(runner.labels, 'self-hosted')"
23+ uses : actions/setup-java@v4
2024 with :
21- distribution : ' zulu' # See 'Supported distributions' for available options
22- java-version : ' 11'
23- - name : Install Flutter
25+ distribution : ' zulu'
26+ java-version : ' 17'
27+
28+ - name : Setup Flutter (Only on GitHub Runners)
29+ if : " !contains(runner.labels, 'self-hosted')"
2430 uses : subosito/flutter-action@v2
2531 with :
2632 channel : ' stable'
2733 cache : true
28- # - name: Install dependencies
29- # run: flutter pub get
30- - run : flutter --version
31-
32-
33- - name : Run unit tests
34- run : flutter test --coverage
3534
36- # - name: Run integration tests
37- # uses: reactivecircus/android-emulator-runner@v1
38- # with:
39- # api-level: 29
40- # script: flutter drive --driver=test_driver/main_test.dart --target integration_test/app_test.dart
41- - name : create Fat APK
42- run : flutter build apk --release
43-
44- - name : create Split APK
45- run : flutter build apk --split-per-abi
35+ - name : Clean build artifacts
36+ run : flutter clean
4637
47- - name : Upload Fat APK
48- uses : actions/upload-artifact@v3
49- with :
50- name : release-fat-apk
51- path : build/app/outputs/apk/release/app-release.apk
38+ - name : Solve dependencies
39+ run : flutter pub get
5240
53- - name : Upload Split APK
54- uses : actions/upload-artifact@v3
55- with :
56- name : release-split-apk
57- path : build/app/outputs/flutter-apk/*.apk
41+ - name : Run unit tests
42+ run : flutter test --coverage
43+
44+ - name : Build APKs
45+ run : |
46+ flutter build apk --release
47+ flutter build apk --split-per-abi
5848
5949 - id : read-version
6050 uses : NiklasLehnfeld/flutter-version-number-action@main
6151 with :
6252 file-path : pubspec.yaml
53+
6354 - name : Push to Releases
6455 uses : ncipollo/release-action@v1
6556 with :
66- artifacts : " build/app/outputs/apk/release/*.apk, build/app/outputs/ flutter-apk/*.apk"
57+ artifacts : " build/app/outputs/flutter-apk/*.apk"
6758 tag : v${{ steps.read-version.outputs.version-number }}
68- token : ${{ secrets.TOKEN }}
59+ token : ${{ secrets.GITHUB_TOKEN }}
6960 generateReleaseNotes : true
70- - name : Checkout
71- uses : actions/checkout@v2
72- with :
73- fetch-depth : 0
61+
7462 - name : " Build Changelog"
75- uses : mikepenz/release-changelog-builder-action@v3
63+ uses : mikepenz/release-changelog-builder-action@v4
7664 with :
7765 configuration : " .github/workflows/configs/configuration.json"
7866 ignorePreReleases : " false"
7967 commitMode : " true"
8068 env :
81- GITHUB_TOKEN : ${{ secrets.TOKEN }}
82-
69+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments