Skip to content

- Build iOS IPA with prod flavor #18

- Build iOS IPA with prod flavor

- Build iOS IPA with prod flavor #18

Workflow file for this run

name: Flutter Build Apk
on:
push:
branches:
- main
- development
- fix/improved-pagination
jobs:
build:
name: "Flutter Build APK"
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- run: java --version
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.29.2
cache: true
- run: flutter --version
# Create .env.dev file
- name: Create .env.dev file
run: |
cat <<EOT >> apps/app_core/.env.dev
ENV=Development
BASE_API_URL=${{ secrets.BASE_API_URL_DEV }}
USER_API_URL=${{ secrets.USER_API_URL_DEV }}
IOS_APP_STORE_ID=${{ secrets.IOS_APP_STORE_ID }}
ONESIGNAL_APP_ID=${{ secrets.ONESIGNAL_APP_ID_DEV }}
EOT
# Create .env.staging file
- name: Create .env.staging file
run: |
cat <<EOT >> apps/app_core/.env.staging
ENV=Staging
BASE_API_URL=${{ secrets.BASE_API_URL_DEV }}
USER_API_URL=${{ secrets.USER_API_URL_DEV }}
IOS_APP_STORE_ID=${{ secrets.IOS_APP_STORE_ID }}
ONESIGNAL_APP_ID=${{ secrets.ONESIGNAL_APP_ID_DEV }}
EOT
# Create .env.prod file
- name: Create .env.prod file
run: |
cat <<EOT >> apps/app_core/.env.prod
ENV=Production
BASE_API_URL=${{ secrets.BASE_API_URL_PROD }}
USER_API_URL=${{ secrets.USER_API_URL_PROD }}
IOS_APP_STORE_ID=${{ secrets.IOS_APP_STORE_ID }}
ONESIGNAL_APP_ID=${{ secrets.ONESIGNAL_APP_ID_PROD }}
EOT
- name: Install melos
run: flutter pub global activate melos
- name: Setup melos
run: melos bs
- name: Generate Assets, Enviroments Configurations and Hive Code
run: melos run build-runner
- name: Run Localisation Key Generation
run: melos run locale-gen
- name: Run Asset generation
run: melos run asset-gen
- name: Accept Android SDK Licenses and Install NDK
run: |
yes | sudo ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses
sudo ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "ndk;29.0.13113456"
# Build Android apk for prod flavor
- name: Build Android apk For Production
run: melos run build-apk
# Install Firebase CLI
- name: Install Firebase CLI
run: curl -sL https://firebase.tools | bash
# Distribute APK to Firebase App Distribution
- name: Distribute APK
run: |
firebase appdistribution:distribute apps/app_core/build/app/outputs/flutter-apk/app-prod-release.apk \
--app "${{ secrets.FIREBASE_APP_ID }}" \
--groups "7Span-Internal" \
--release-notes "${{ github.event.head_commit.message }}"
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
- name: Upload the build Artifact
uses: actions/upload-artifact@v4
with:
name: app-release
path: apps/app_core/build/app/outputs/flutter-apk/app-prod-release.apk
# === iOS TestFlight Upload ===
- name: Create App Store Connect API key file
run: |
mkdir -p apps/app_core/private_keys
echo "${{ secrets.APP_STORE_API_KEY_P8 }}" | base64 --decode > apps/app_core/private_keys/AuthKey_${{ secrets.APP_STORE_API_KEY_ID }}.p8
- name: Build iOS IPA
working-directory: apps/app_core
run: flutter build ipa -t lib/main_production.dart --flavor prod
- name: Upload IPA to App Store Connect
working-directory: apps/app_core
run: |
xcrun altool --upload-app \
--type ios \
--file build/ios/ipa/*.ipa \
--apiKey "${{ secrets.APP_STORE_API_KEY_ID }}" \
--apiIssuer "${{ secrets.APP_STORE_ISSUER_ID }}"