# Reusable script for building the Flutter app flutter-build-script: &flutter-build-script name: 👷 Build Flutter App script: | flutter pub get flutter pub run build_runner build --delete-conflicting-outputs # Build Android flutter build appbundle --flavor $FLAVOR # Build iOS flutter build ipa --flavor $FLAVOR android-app-build-script: &android-app-build-script name: 🤖 Build Android App script: | # Build Android flutter build appbundle --flavor $FLAVOR ios-app-build-script: &ios-app-build-script name: 🍎 Build iOS App script: | # Build Android flutter build ipa --flavor $FLAVOR # Reusable script for distributing to Firebase distribute-script: &distribute-script name: 🚛 Distribute to Firebase App Distribution script: | # Distribute Android firebase appdistribution:distribute "build/app/outputs/bundle/${FLAVOR}Release/app-${FLAVOR}-release.aab" \ --app $FIREBASE_APP_ID_ANDROID \ --release-notes "Build $FCI_BUILD_NUMBE R" \ --groups "$FIREBASE_TESTER_GROUPS" \ --token $FIREBASE_TOKEN # Distribute iOS firebase appdistribution:distribute "build/ios/ipa/app.ipa" \ --app $FIREBASE_APP_ID_IOS \ --release-notes "Build $FCI_BUILD_NUMBE R" \ --groups "$FIREBASE_TESTER_GROUPS" \ --token $FIREBASE_TOKEN workflows: # ================================================================================= # Base workflow for client_app # ================================================================================= client-app-base: &client-app-base name: Client App Base working_directory: mobile-apps/client-app instance_type: mac_mini_m2 max_build_duration: 60 environment: flutter: stable xcode: latest cocoapods: default cache: cache_paths: - $HOME/.pub-cache - $FCI_BUILD_DIR/mobile-apps/client-app/build - $FCI_BUILD_DIR/mobile-apps/client-app/.dart_tool # ================================================================================= # Base workflow for staff_app # ================================================================================= staff-app-base: &staff-app-base name: Staff App Base working_directory: mobile-apps/staff-app instance_type: mac_mini_m2 max_build_duration: 60 environment: flutter: stable xcode: latest cocoapods: default cache: cache_paths: - $HOME/.pub-cache - $FCI_BUILD_DIR/mobile-apps/staff-app/build - $FCI_BUILD_DIR/mobile-apps/staff-app/.dart_tool # ================================================================================= # Client App Workflows # ================================================================================= client-app-dev: <<: *client-app-base name: Client App Dev environment: groups: - client_app_dev_credentials # Codemagic Environment Variable Group scripts: - *flutter-build-script - *distribute-script client-app-staging: <<: *client-app-base name: Client App Staging environment: groups: - client_app_staging_credentials # Codemagic Environment Variable Group scripts: - *flutter-build-script - *distribute-script client-app-prod: <<: *client-app-base name: Client App Prod environment: groups: - client_app_prod_credentials # Codemagic Environment Variable Group scripts: - *flutter-build-script - *distribute-script # ================================================================================= # Staff App Workflows # ================================================================================= staff-app-dev-app-distribute: <<: *staff-app-base name: 🚛👨‍🍳 Staff App Dev (App Distribute) environment: groups: - staff_app_dev_credentials # Codemagic Environment Variable Group scripts: - *flutter-build-script - *build-android-script - *build-ios-script - *distribute-script staff-app-staging-app-distribute: <<: *staff-app-base name: 🚛👨‍🍳 Staff App Staging (App Distribute) environment: groups: - staff_app_staging_credentials # Codemagic Environment Variable Group scripts: - *flutter-build-script - *build-android-script - *build-ios-script - *distribute-script staff-app-prod-app-distribute: <<: *staff-app-base name: 🚛👨‍🍳 Staff App Prod (App Distribute) environment: groups: - staff_app_prod_credentials # Codemagic Environment Variable Group scripts: - *flutter-build-script - *build-android-script - *build-ios-script - *distribute-script