Last active
February 25, 2024 05:40
Star
You must be signed in to star a gist
Flutter Github Actions Build and Deploy Web to Firebase Hosting, iOS to Testflight, Android to Google Play (fastlane)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
jobs: | |
build_web: | |
name: Build Flutter (Web) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- uses: subosito/flutter-action@v1 | |
with: | |
channel: 'dev' | |
- run: flutter pub get | |
- run: flutter config --enable-web | |
- run: flutter build web | |
- name: Archive Production Artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: web-build | |
path: build/web | |
build_ios: | |
name: Build Flutter (iOS) | |
runs-on: macOS-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- uses: actions/setup-java@v1 | |
with: | |
java-version: '12.x' | |
- uses: subosito/flutter-action@v1 | |
with: | |
channel: 'dev' | |
- run: flutter pub get | |
- run: flutter clean | |
- run: flutter build ios --release --no-codesign | |
- name: Upload iPA | |
uses: actions/upload-artifact@master | |
with: | |
name: ios-build | |
path: build/ios/iphoneos | |
build_apk: | |
name: Build Flutter (Android) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- uses: actions/setup-java@v1 | |
with: | |
java-version: '12.x' | |
- uses: subosito/flutter-action@v1 | |
with: | |
channel: 'dev' | |
- run: flutter pub get | |
# - run: flutter build apk --target-platform android-arm,android-arm64 --split-per-abi | |
# - run: flutter build appbundle --target-platform android-arm,android-arm64 | |
- run: flutter build appbundle | |
- name: Upload APK | |
uses: actions/upload-artifact@master | |
with: | |
name: apk-build | |
path: build/app/outputs/apk/release | |
deploy_web: | |
name: Deploy Web to Firebase Hosting | |
needs: build_web | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@master | |
- name: Download Artifact | |
uses: actions/download-artifact@master | |
with: | |
name: web-build | |
path: web-build | |
- name: Deploy to Firebase | |
uses: w9jds/firebase-action@master | |
with: | |
args: deploy --only hosting --public web-build | |
env: | |
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} | |
PROJECT_ID: default | |
# deploy_ios: | |
# name: Deploy iOS Beta | |
# needs: [build_ios] | |
# runs-on: macOS-latest | |
# steps: | |
# - uses: actions/checkout@v1 | |
# - uses: subosito/flutter-action@v1 | |
# with: | |
# channel: 'dev' | |
# - run: mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config | |
# - uses: webfactory/ssh-agent@v0.1.1 | |
# with: | |
# ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} | |
# - uses: maierj/fastlane-action@v0.9.5 | |
# with: | |
# lane: 'beta' | |
# subdirectory: 'ios' | |
# env: | |
# GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | |
# deploy_apk: | |
# name: Deploy Android Beta | |
# needs: [build_apk] | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v1 | |
# - uses: actions/setup-java@v1 | |
# with: | |
# java-version: '12.x' | |
# - uses: subosito/flutter-action@v1 | |
# with: | |
# channel: 'dev' | |
# - uses: maierj/fastlane-action@v0.9.5 | |
# with: | |
# lane: 'beta' | |
# subdirectory: 'android' | |
# env: | |
# GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
beta_ios: | |
name: Upload iOS Beta to Firebase App Distribution | |
needs: [build_ios] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: set up JDK 1.8 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 1.8 | |
- name: Download Artifact | |
uses: actions/download-artifact@master | |
with: | |
name: ios-build | |
- name: Upload IPA | |
uses: wzieba/Firebase-Distribution-Github-Action@v1.0.0 | |
with: | |
appId: ${{secrets.FIREBASE_IOS_APPID}} | |
token: ${{secrets.FIREBASE_TOKEN}} | |
group: testers | |
file: Runner.ipa | |
beta_apk: | |
name: Upload Android Beta to Firebase App Distribution | |
needs: [build_apk] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: set up JDK 1.8 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 1.8 | |
- name: Download Artifact | |
uses: actions/download-artifact@master | |
with: | |
name: apk-build | |
- name: Upload APK | |
uses: wzieba/Firebase-Distribution-Github-Action@v1.0.0 | |
with: | |
appId: ${{secrets.FIREBASE_ANDROID_APPID}} | |
token: ${{secrets.FIREBASE_TOKEN}} | |
group: testers | |
file: app-release.aap | |
@RodrigoPorras any tutorial on how to do that?
@RodrigoPorras any tutorial on how to do that?
Hello @Saifallak. I have some messy files, no exactly a tutorial.
how do we config flutter version?
edit:
just edited instead of deleting incase someone needs it in future. found that it can be found here https://github.com/subosito/flutter-action
Had the same issue with the iPA generation. Fortunately, i found this article that described the steps to generate the iPA very well: https://damienaicheh.github.io/flutter/github/actions/2021/04/22/build-sign-flutter-ios-github-actions-en.html
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
yeah, i had to use fastlane, i was able to convert the Runner.app to .ipa but fastlane is a best approach