1+ name : Flutter Build
2+
13on :
2- pull_request :
3- branches :
4- - main
5- - master
64 push :
7- branches :
8- - main
9- - master
10- - develop
11- name : " Build & Release"
5+ branches : [ "main" ]
6+ pull_request :
7+ branches : [ "main" ]
8+
129jobs :
1310 build :
14- name : Build & Release
11+ name : Build APK and IPA
12+ # macOS is required to build iOS apps
1513 runs-on : macos-latest
14+
1615 steps :
17- - uses : actions/checkout@v3
18- - uses : actions/setup-java@v3
16+ # 1. Checkout the repository
17+ - name : Checkout code
18+ uses : actions/checkout@v4
19+
20+ # 2. Set up Java for Android build
21+ - name : Set up Java
22+ uses : actions/setup-java@v4
1923 with :
2024 distribution : ' zulu'
21- java-version : ' 12'
22- - uses : subosito/flutter-action@v2
25+ java-version : ' 17'
26+
27+ # 3. Set up Flutter
28+ - name : Set up Flutter
29+ uses : subosito/flutter-action@v2
2330 with :
31+ flutter-version : ' 3.38.4' # Or your specific version
2432 channel : ' stable'
25- architecture : x64
26-
27- - run : flutter build apk --release --split-per-abi
28- - run : |
29- flutter build ios --no-codesign
30- cd build/ios/iphoneos
31- mkdir Payload
32- cd Payload
33- ln -s ../Runner.app
34- cd ..
35- zip -r app.ipa Payload
36- - name : Push to Releases
37- uses : ncipollo/release-action@v1
38- with :
39- artifacts : " build/app/outputs/apk/release/*,build/ios/iphoneos/app.ipa"
40- tag : v1.0.${{ github.run_number }}
41- token : ${{ secrets.TOKEN }}
33+ cache : true
4234
35+ # 4. Install dependencies
36+ - name : Install dependencies
37+ run : flutter pub get
4338
39+ # 5. Run static analysis (Optional but recommended)
40+ - name : Analyze code
41+ run : flutter analyze
4442
43+ # 6. Build Android APK
44+ - name : Build Android APK
45+ run : flutter build apk --release
4546
47+ # 7. Build iOS (No-codesign for testing)
48+ # Note: Building for iOS on CI usually requires --no-codesign
49+ # unless you have uploaded p12/mobileprovision files.
50+ - name : Build iOS IPA
51+ run : flutter build ios --release --no-codesign
4652
53+ # 8. Upload Android Artifact
54+ - name : Upload APK
55+ uses : actions/upload-artifact@v4
56+ with :
57+ name : release-apk
58+ path : build/app/outputs/flutter-apk/app-release.apk
4759
48- # push to master, main, develop
49- # pull request on main master
60+ # 9. Upload iOS Artifact
61+ - name : Upload iOS Build
62+ uses : actions/upload-artifact@v4
63+ with :
64+ name : release-ios
65+ path : build/ios/iphoneos/Runner.app
0 commit comments