feat: update launch configurations and build scripts for staging and production environments

This commit is contained in:
Achintha Isuru
2026-03-09 17:27:56 -04:00
parent 093cc4e0a4
commit fe98462431
4 changed files with 120 additions and 35 deletions

94
.vscode/launch.json vendored
View File

@@ -1,41 +1,127 @@
{
"version": "0.2.0",
"configurations": [
// ===================== Client App =====================
{
"name": "Client (Dev) - Android",
"name": "Client [DEV] - Android",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/client/lib/main.dart",
"args": [
"--flavor", "dev",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
]
},
{
"name": "Client (Dev) - iOS",
"name": "Client [DEV] - iOS",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/client/lib/main.dart",
"args": [
"--flavor", "dev",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
]
},
{
"name": "Staff (Dev) - Android",
"name": "Client [STG] - Android",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/client/lib/main.dart",
"args": [
"--flavor", "stage",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.stage.json"
]
},
{
"name": "Client [STG] - iOS",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/client/lib/main.dart",
"args": [
"--flavor", "stage",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.stage.json"
]
},
{
"name": "Client [PROD] - Android",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/client/lib/main.dart",
"args": [
"--flavor", "prod",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.prod.json"
]
},
{
"name": "Client [PROD] - iOS",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/client/lib/main.dart",
"args": [
"--flavor", "prod",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.prod.json"
]
},
// ===================== Staff App =====================
{
"name": "Staff [DEV] - Android",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/staff/lib/main.dart",
"args": [
"--flavor", "dev",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
]
},
{
"name": "Staff (Dev) - iOS",
"name": "Staff [DEV] - iOS",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/staff/lib/main.dart",
"args": [
"--flavor", "dev",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
]
},
{
"name": "Staff [STG] - Android",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/staff/lib/main.dart",
"args": [
"--flavor", "stage",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.stage.json"
]
},
{
"name": "Staff [STG] - iOS",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/staff/lib/main.dart",
"args": [
"--flavor", "stage",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.stage.json"
]
},
{
"name": "Staff [PROD] - Android",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/staff/lib/main.dart",
"args": [
"--flavor", "prod",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.prod.json"
]
},
{
"name": "Staff [PROD] - iOS",
"request": "launch",
"type": "dart",
"program": "apps/mobile/apps/staff/lib/main.dart",
"args": [
"--flavor", "prod",
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.prod.json"
]
}
]
}

View File

@@ -14,15 +14,14 @@ scripts:
echo " 🚀 KROW WORKFORCE CUSTOM COMMANDS 🚀"
echo "============================================================"
echo " BUILD COMMANDS:"
echo " - melos run build:client : Build Client App (APK)"
echo " - melos run build:staff : Build Staff App (APK)"
echo " - melos run build:client -- <PLATFORM> --<MODE> --flavor <ENV> --dart-define-from-file=../../config.<ENV>.json"
echo " - melos run build:staff -- <PLATFORM> --<MODE> --flavor <ENV> --dart-define-from-file=../../config.<ENV>.json"
echo " - melos run build:design-system : Build Design System Viewer"
echo ""
echo " DEBUG/START COMMANDS:"
echo " - melos run start:client -- -d <ID> : Run Client App"
echo " - melos run start:staff -- -d <ID> : Run Staff App"
echo " - melos run start:client -- -d <ID> --flavor <ENV> --dart-define-from-file=../../config.<ENV>.json"
echo " - melos run start:staff -- -d <ID> --flavor <ENV> --dart-define-from-file=../../config.<ENV>.json"
echo " - melos run start:design-system : Run DS Viewer"
echo " (e.g., melos run start:client -- -d chrome)"
echo ""
echo " CODE GENERATION:"
echo " - melos run gen:l10n : Generate Slang l10n"
@@ -49,32 +48,30 @@ scripts:
packageFilters:
dependsOn: build_runner
# Single-line scripts so that melos run arg forwarding works via --
# Usage: melos run build:client -- apk --release --flavor dev --dart-define-from-file=../../config.dev.json
build:client:
run: |
melos run gen:l10n --filter="core_localization"
melos run gen:build --filter="core_localization"
melos exec --scope="krowwithus_client" -- "flutter build apk"
description: "Build the Client app (Android APK by default)."
run: melos exec --scope="krowwithus_client" -- flutter build
description: "Build the Client app. Pass args via --: <platform> --<mode> --flavor <env> --dart-define-from-file=../../config.<env>.json"
build:staff:
run: |
melos run gen:l10n --filter="core_localization"
melos run gen:build --filter="core_localization"
melos exec --scope="krowwithus_staff" -- "flutter build apk"
description: "Build the Staff app (Android APK by default)."
run: melos exec --scope="krowwithus_staff" -- flutter build
description: "Build the Staff app. Pass args via --: <platform> --<mode> --flavor <env> --dart-define-from-file=../../config.<env>.json"
build:design-system-viewer:
run: melos exec --scope="design_system_viewer" -- "flutter build apk"
run: melos exec --scope="design_system_viewer" -- flutter build apk
description: "Build the Design System Viewer app (Android APK by default)."
# Single-line scripts so that melos run arg forwarding works via --
# Usage: melos run start:client -- -d android --flavor dev --dart-define-from-file=../../config.dev.json
start:client:
run: melos exec --scope="krowwithus_client" -- "flutter run"
description: "Start the Client app. Pass platform using -- -d <platform>, e.g. -d chrome"
run: melos exec --scope="krowwithus_client" -- flutter run
description: "Start the Client app. Pass args via --: -d <device> --flavor <env> --dart-define-from-file=../../config.<env>.json"
start:staff:
run: melos exec --scope="krowwithus_staff" -- "flutter run"
description: "Start the Staff app. Pass platform using -- -d <platform>, e.g. -d chrome"
run: melos exec --scope="krowwithus_staff" -- flutter run
description: "Start the Staff app. Pass args via --: -d <device> --flavor <env> --dart-define-from-file=../../config.<env>.json"
start:design-system-viewer:
run: melos exec --scope="design_system_viewer" -- "flutter run"
run: melos exec --scope="design_system_viewer" -- flutter run
description: "Start the Design System Viewer app. Pass platform using -- -d <platform>, e.g. -d chrome"

View File

@@ -40,10 +40,12 @@ distribute-android-script: &distribute-android-script
name: 🚀 🤖 Distribute Android to Firebase App Distribution
script: |
# Distribute Android APK
# Note: With flavors the APK is in a flavor-specific subdirectory
APP_PATH=$(find apps/mobile/apps -name "app-${ENV}-release.apk" -o -name "app-release.apk" | head -n 1)
# With flavors the APK is at: build/app/outputs/apk/<flavor>/release/app-<flavor>-release.apk
APP_PATH=$(find apps/mobile/apps -name "app-${ENV}-release.apk" | head -n 1)
if [ -z "$APP_PATH" ]; then
echo "No APK found!"
echo "No APK found matching app-${ENV}-release.apk — was --flavor ${ENV} applied during build?"
echo "Listing all APKs found:"
find apps/mobile/apps -name "*.apk" -type f
exit 1
fi
echo "Found APK at: $APP_PATH"

View File

@@ -53,9 +53,9 @@ mobile-client-build: dataconnect-generate-sdk
$(eval MODE ?= release)
@echo "--> Building client app for $(PLATFORM) in $(MODE) mode (env: $(ENV))..."
@cd $(MOBILE_DIR) && \
melos exec --scope="core_localization" -- "dart run slang" && \
melos exec --scope="core_localization" -- "dart run build_runner build --delete-conflicting-outputs" && \
melos exec --scope="krowwithus_client" -- "flutter build $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json"
melos run gen:l10n && \
melos run gen:build && \
melos run build:client -- $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json
# --- Staff App ---
mobile-staff-dev-android: dataconnect-generate-sdk
@@ -69,9 +69,9 @@ mobile-staff-build: dataconnect-generate-sdk
$(eval MODE ?= release)
@echo "--> Building staff app for $(PLATFORM) in $(MODE) mode (env: $(ENV))..."
@cd $(MOBILE_DIR) && \
melos exec --scope="core_localization" -- "dart run slang" && \
melos exec --scope="core_localization" -- "dart run build_runner build --delete-conflicting-outputs" && \
melos exec --scope="krowwithus_staff" -- "flutter build $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json"
melos run gen:l10n && \
melos run gen:build && \
melos run build:staff -- $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json
# --- E2E (Maestro) ---
# Set env before running: TEST_CLIENT_EMAIL, TEST_CLIENT_PASSWORD, TEST_CLIENT_COMPANY, TEST_STAFF_PHONE, TEST_STAFF_OTP, TEST_STAFF_SIGNUP_PHONE