feat: update launch configurations and build scripts for staging and production environments
This commit is contained in:
96
.vscode/launch.json
vendored
96
.vscode/launch.json
vendored
@@ -1,41 +1,127 @@
|
|||||||
{
|
{
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
// ===================== Client App =====================
|
||||||
{
|
{
|
||||||
"name": "Client (Dev) - Android",
|
"name": "Client [DEV] - Android",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"type": "dart",
|
"type": "dart",
|
||||||
"program": "apps/mobile/apps/client/lib/main.dart",
|
"program": "apps/mobile/apps/client/lib/main.dart",
|
||||||
"args": [
|
"args": [
|
||||||
|
"--flavor", "dev",
|
||||||
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
|
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Client (Dev) - iOS",
|
"name": "Client [DEV] - iOS",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"type": "dart",
|
"type": "dart",
|
||||||
"program": "apps/mobile/apps/client/lib/main.dart",
|
"program": "apps/mobile/apps/client/lib/main.dart",
|
||||||
"args": [
|
"args": [
|
||||||
|
"--flavor", "dev",
|
||||||
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
|
"--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",
|
"request": "launch",
|
||||||
"type": "dart",
|
"type": "dart",
|
||||||
"program": "apps/mobile/apps/staff/lib/main.dart",
|
"program": "apps/mobile/apps/staff/lib/main.dart",
|
||||||
"args": [
|
"args": [
|
||||||
|
"--flavor", "dev",
|
||||||
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
|
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Staff (Dev) - iOS",
|
"name": "Staff [DEV] - iOS",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"type": "dart",
|
"type": "dart",
|
||||||
"program": "apps/mobile/apps/staff/lib/main.dart",
|
"program": "apps/mobile/apps/staff/lib/main.dart",
|
||||||
"args": [
|
"args": [
|
||||||
|
"--flavor", "dev",
|
||||||
"--dart-define-from-file=${workspaceFolder}/apps/mobile/config.dev.json"
|
"--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"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,15 +14,14 @@ scripts:
|
|||||||
echo " 🚀 KROW WORKFORCE CUSTOM COMMANDS 🚀"
|
echo " 🚀 KROW WORKFORCE CUSTOM COMMANDS 🚀"
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
echo " BUILD COMMANDS:"
|
echo " BUILD COMMANDS:"
|
||||||
echo " - melos run build:client : Build Client App (APK)"
|
echo " - melos run build:client -- <PLATFORM> --<MODE> --flavor <ENV> --dart-define-from-file=../../config.<ENV>.json"
|
||||||
echo " - melos run build:staff : Build Staff App (APK)"
|
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 " - melos run build:design-system : Build Design System Viewer"
|
||||||
echo ""
|
echo ""
|
||||||
echo " DEBUG/START COMMANDS:"
|
echo " DEBUG/START COMMANDS:"
|
||||||
echo " - melos run start:client -- -d <ID> : Run Client App"
|
echo " - melos run start:client -- -d <ID> --flavor <ENV> --dart-define-from-file=../../config.<ENV>.json"
|
||||||
echo " - melos run start:staff -- -d <ID> : Run Staff App"
|
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 " - melos run start:design-system : Run DS Viewer"
|
||||||
echo " (e.g., melos run start:client -- -d chrome)"
|
|
||||||
echo ""
|
echo ""
|
||||||
echo " CODE GENERATION:"
|
echo " CODE GENERATION:"
|
||||||
echo " - melos run gen:l10n : Generate Slang l10n"
|
echo " - melos run gen:l10n : Generate Slang l10n"
|
||||||
@@ -49,32 +48,30 @@ scripts:
|
|||||||
packageFilters:
|
packageFilters:
|
||||||
dependsOn: build_runner
|
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:
|
build:client:
|
||||||
run: |
|
run: melos exec --scope="krowwithus_client" -- flutter build
|
||||||
melos run gen:l10n --filter="core_localization"
|
description: "Build the Client app. Pass args via --: <platform> --<mode> --flavor <env> --dart-define-from-file=../../config.<env>.json"
|
||||||
melos run gen:build --filter="core_localization"
|
|
||||||
melos exec --scope="krowwithus_client" -- "flutter build apk"
|
|
||||||
description: "Build the Client app (Android APK by default)."
|
|
||||||
|
|
||||||
build:staff:
|
build:staff:
|
||||||
run: |
|
run: melos exec --scope="krowwithus_staff" -- flutter build
|
||||||
melos run gen:l10n --filter="core_localization"
|
description: "Build the Staff app. Pass args via --: <platform> --<mode> --flavor <env> --dart-define-from-file=../../config.<env>.json"
|
||||||
melos run gen:build --filter="core_localization"
|
|
||||||
melos exec --scope="krowwithus_staff" -- "flutter build apk"
|
|
||||||
description: "Build the Staff app (Android APK by default)."
|
|
||||||
|
|
||||||
build:design-system-viewer:
|
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)."
|
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:
|
start:client:
|
||||||
run: melos exec --scope="krowwithus_client" -- "flutter run"
|
run: melos exec --scope="krowwithus_client" -- flutter run
|
||||||
description: "Start the Client app. Pass platform using -- -d <platform>, e.g. -d chrome"
|
description: "Start the Client app. Pass args via --: -d <device> --flavor <env> --dart-define-from-file=../../config.<env>.json"
|
||||||
|
|
||||||
start:staff:
|
start:staff:
|
||||||
run: melos exec --scope="krowwithus_staff" -- "flutter run"
|
run: melos exec --scope="krowwithus_staff" -- flutter run
|
||||||
description: "Start the Staff app. Pass platform using -- -d <platform>, e.g. -d chrome"
|
description: "Start the Staff app. Pass args via --: -d <device> --flavor <env> --dart-define-from-file=../../config.<env>.json"
|
||||||
|
|
||||||
start:design-system-viewer:
|
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"
|
description: "Start the Design System Viewer app. Pass platform using -- -d <platform>, e.g. -d chrome"
|
||||||
|
|||||||
@@ -40,10 +40,12 @@ distribute-android-script: &distribute-android-script
|
|||||||
name: 🚀 🤖 Distribute Android to Firebase App Distribution
|
name: 🚀 🤖 Distribute Android to Firebase App Distribution
|
||||||
script: |
|
script: |
|
||||||
# Distribute Android APK
|
# Distribute Android APK
|
||||||
# Note: With flavors the APK is in a flavor-specific subdirectory
|
# 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" -o -name "app-release.apk" | head -n 1)
|
APP_PATH=$(find apps/mobile/apps -name "app-${ENV}-release.apk" | head -n 1)
|
||||||
if [ -z "$APP_PATH" ]; then
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Found APK at: $APP_PATH"
|
echo "Found APK at: $APP_PATH"
|
||||||
|
|||||||
@@ -53,9 +53,9 @@ mobile-client-build: dataconnect-generate-sdk
|
|||||||
$(eval MODE ?= release)
|
$(eval MODE ?= release)
|
||||||
@echo "--> Building client app for $(PLATFORM) in $(MODE) mode (env: $(ENV))..."
|
@echo "--> Building client app for $(PLATFORM) in $(MODE) mode (env: $(ENV))..."
|
||||||
@cd $(MOBILE_DIR) && \
|
@cd $(MOBILE_DIR) && \
|
||||||
melos exec --scope="core_localization" -- "dart run slang" && \
|
melos run gen:l10n && \
|
||||||
melos exec --scope="core_localization" -- "dart run build_runner build --delete-conflicting-outputs" && \
|
melos run gen:build && \
|
||||||
melos exec --scope="krowwithus_client" -- "flutter build $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json"
|
melos run build:client -- $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json
|
||||||
|
|
||||||
# --- Staff App ---
|
# --- Staff App ---
|
||||||
mobile-staff-dev-android: dataconnect-generate-sdk
|
mobile-staff-dev-android: dataconnect-generate-sdk
|
||||||
@@ -69,9 +69,9 @@ mobile-staff-build: dataconnect-generate-sdk
|
|||||||
$(eval MODE ?= release)
|
$(eval MODE ?= release)
|
||||||
@echo "--> Building staff app for $(PLATFORM) in $(MODE) mode (env: $(ENV))..."
|
@echo "--> Building staff app for $(PLATFORM) in $(MODE) mode (env: $(ENV))..."
|
||||||
@cd $(MOBILE_DIR) && \
|
@cd $(MOBILE_DIR) && \
|
||||||
melos exec --scope="core_localization" -- "dart run slang" && \
|
melos run gen:l10n && \
|
||||||
melos exec --scope="core_localization" -- "dart run build_runner build --delete-conflicting-outputs" && \
|
melos run gen:build && \
|
||||||
melos exec --scope="krowwithus_staff" -- "flutter build $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json"
|
melos run build:staff -- $(PLATFORM) --$(MODE) --flavor $(ENV) --dart-define-from-file=../../config.$(ENV).json
|
||||||
|
|
||||||
# --- E2E (Maestro) ---
|
# --- 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
|
# Set env before running: TEST_CLIENT_EMAIL, TEST_CLIENT_PASSWORD, TEST_CLIENT_COMPANY, TEST_STAFF_PHONE, TEST_STAFF_OTP, TEST_STAFF_SIGNUP_PHONE
|
||||||
|
|||||||
Reference in New Issue
Block a user