- Build iOS IPA with prod flavor #18
Workflow file for this run
This file contains hidden or 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: 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 }}" | |