My Workflow
This GitHub Action workflow can be used to fully automate your build, test and deployment processes for Flutter.
All Flutter build targets are supported with this workflow: android, iOS and web.
When pushing without a tag this workflow will analyze and test your Flutter app.
When pushing with a tag (starting with 'v' in this case) this workflow additionally creates a release including all artifacts needed for deployment.
These artifacts can then be used to deploy your apps.
I have added the firebase hosting deploy as an example for web deployment.
This can be further extended to deploy the iOS and Android app to a test platform like testflight or directly to the platform specific stores (don't forget to sign your apps 😄).
This workflow is a great starting point for any Flutter app and can be tweaked to your personal preference.
Submission Category:
DIY Deployments, Phone Friendly
Yaml File or Link to Code
name: Build Flutter apps on: push: branches: - main tags: - v* jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1.5.3 with: channel: 'stable' - name: Install Dependencies run: flutter packages get - name: Analyze run: flutter analyze lib test - name: Run tests run: flutter test --no-pub --coverage --test-randomize-ordering-seed random packages test - name: Build Android App if: startsWith(github.ref, 'refs/tags/v') run: flutter build apk - name: Build iOS App if: startsWith(github.ref, 'refs/tags/v') run: | flutter build ios --no-codesign cd build/ios/iphoneos mkdir Payload cd Payload ln -s ../Runner.app cd .. zip -r app.ipa Payload - name: Build web if: startsWith(github.ref, 'refs/tags/v') run: | flutter build web cd build/web zip -r web-app.zip . - name: Archive Production Artifact if: startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@master with: name: web path: build/web - name: Release Apps if: startsWith(github.ref, 'refs/tags/v') uses: ncipollo/release-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} artifacts: 'build/app/outputs/**/*.apk,build/ios/iphoneos/app.ipa,build/web/web-app.zip' deploy: if: startsWith(github.ref, 'refs/tags/v') needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Download Artifact uses: actions/download-artifact@master with: name: web path: build/web - name: Deploy to Firebase hosting uses: w9jds/firebase-action@master with: args: deploy --message \"${{ github.event.head_commit.message }}\" --only hosting env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
Additional Resources / Info
We currently use this workflow for our own Flutter app that is not yet published and not yet open-source, but are planning on doing so in the near future!
Top comments (1)
How to solve this bug, plz help me..
Run flutter build ios --no-codesign cd build/ios/iphoneos mkdir Payload cd Payload ln -s ../Runner.app cd .. zip -r app.ipa Payload
Could not find an option or flag "-s".
Run 'flutter -h' (or 'flutter -h') for available flutter commands and options.
Error: Process completed with exit code 64.