1+ name : Flutter CI/CD - Build APK & Deploy Web
2+
3+ on :
4+ push :
5+ tags :
6+ - ' v*' # Trigger on version tags (e.g., v1.0.0)
7+
8+ env :
9+ FLUTTER_VERSION : ' 3.38.5' # Specify your Flutter version
10+ BUILD_NUMBER : ${{ github.run_number }}
11+ BUILD_DATE : ${{ github.event.head_commit.timestamp }}
12+
13+ jobs :
14+ build-android :
15+ runs-on : ubuntu-latest
16+ permissions :
17+ contents : write # Required for creating releases
18+
19+ steps :
20+ - name : Checkout code
21+ uses : actions/checkout@v4
22+
23+ - name : Set up Java
24+ uses : actions/setup-java@v3
25+ with :
26+ distribution : ' temurin'
27+ java-version : ' 21'
28+
29+ - name : Set up Flutter
30+ uses : subosito/flutter-action@v2
31+ with :
32+ flutter-version : ${{ env.FLUTTER_VERSION }}
33+ channel : stable
34+ cache : true
35+
36+ - name : Install dependencies
37+ run : flutter pub get
38+
39+ - name : Verify Flutter installation
40+ run : flutter doctor -v
41+
42+ - name : Build APK (Release - Unsigned)
43+ run : |
44+ flutter build apk --release --target-platform android-arm64
45+ echo "APK built successfully!"
46+ ls -la build/app/outputs/flutter-apk/
47+
48+ - name : Upload APK artifact
49+ uses : actions/upload-artifact@v4
50+ with :
51+ name : app-release-unsigned
52+ path : build/app/outputs/flutter-apk/app-release-arm64.apk
53+ retention-days : 2
54+
55+ - name : Create GitHub Release
56+ if : startsWith(github.ref, 'refs/tags/v')
57+ uses : softprops/action-gh-release@v1
58+ with :
59+ files : build/app/outputs/flutter-apk/app-release-arm64.apk
60+ generate_release_notes : true
61+ prerelease : false
62+ draft : false
63+ env :
64+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
65+
66+ build-web :
67+ environment :
68+ name : github-pages
69+ runs-on : ubuntu-latest
70+ permissions :
71+ contents : write # Required for gh-pages deployment
72+ pages : write
73+ id-token : write
74+
75+ steps :
76+ - name : Checkout code
77+ uses : actions/checkout@v4
78+
79+ - name : Set up Flutter
80+ uses : subosito/flutter-action@v2
81+ with :
82+ flutter-version : ${{ env.FLUTTER_VERSION }}
83+ channel : stable
84+ cache : true
85+
86+ - name : Install dependencies
87+ run : flutter pub get
88+
89+ - name : Build Web App
90+ run : |
91+ flutter config --enable-web
92+ flutter build web --release --base-href "/"
93+ echo "Web build completed!"
94+
95+ - name : Deploy to GitHub Pages
96+ uses : peaceiris/actions-gh-pages@v4
97+ with :
98+ github_token : ${{ secrets.GITHUB_TOKEN }}
99+ publish_dir : ./build/web
0 commit comments