347 lines
11 KiB
YAML
347 lines
11 KiB
YAML
# Note: key.properties files are now committed to the repository
|
|
# CodeMagic keystores are uploaded via Team Settings > Code signing identities > Android keystores
|
|
# The keystores are referenced in each workflow's environment section with custom variable names
|
|
|
|
# Reusable script for building the Flutter app
|
|
client-app-android-apk-build-script: &client-app-android-apk-build-script
|
|
name: 👷 🤖 Build Client App APK (Android)
|
|
script: |
|
|
dart pub global activate melos
|
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
|
make mobile-install
|
|
make mobile-client-build PLATFORM=apk MODE=release ENV=$ENV
|
|
|
|
client-app-ios-build-script: &client-app-ios-build-script
|
|
name: 👷 🍎 Build Client App (iOS)
|
|
script: |
|
|
dart pub global activate melos
|
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
|
make mobile-install
|
|
make mobile-client-build PLATFORM=ios MODE=release ENV=$ENV
|
|
|
|
staff-app-android-apk-build-script: &staff-app-android-apk-build-script
|
|
name: 👷 🤖 Build Staff App APK (Android)
|
|
script: |
|
|
dart pub global activate melos
|
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
|
make mobile-install
|
|
make mobile-staff-build PLATFORM=apk MODE=release ENV=$ENV
|
|
|
|
staff-app-ios-build-script: &staff-app-ios-build-script
|
|
name: 👷 🍎 Build Staff App (iOS)
|
|
script: |
|
|
dart pub global activate melos
|
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
|
make mobile-install
|
|
make mobile-staff-build PLATFORM=ios MODE=release ENV=$ENV
|
|
|
|
# Reusable script for distributing Android to Firebase
|
|
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)
|
|
if [ -z "$APP_PATH" ]; then
|
|
echo "No APK found!"
|
|
exit 1
|
|
fi
|
|
echo "Found APK at: $APP_PATH"
|
|
|
|
firebase appdistribution:distribute "$APP_PATH" \
|
|
--app $FIREBASE_APP_ID_ANDROID \
|
|
--release-notes "Build $FCI_BUILD_NUMBER - Environment: $ENV" \
|
|
--groups "$FIREBASE_TESTER_GROUPS" \
|
|
--token $FIREBASE_TOKEN
|
|
|
|
# Reusable script for distributing iOS to Firebase
|
|
distribute-ios-script: &distribute-ios-script
|
|
name: 🚀 🍎 Distribute iOS to Firebase App Distribution
|
|
script: |
|
|
# Distribute iOS
|
|
IPA_PATH=$(find apps/mobile/apps -name "*.ipa" | head -n 1)
|
|
if [ -z "$IPA_PATH" ]; then
|
|
echo "No IPA found!"
|
|
exit 1
|
|
fi
|
|
echo "Found IPA at: $IPA_PATH"
|
|
|
|
firebase appdistribution:distribute "$IPA_PATH" \
|
|
--app $FIREBASE_APP_ID_IOS \
|
|
--release-notes "Build $FCI_BUILD_NUMBER - Environment: $ENV" \
|
|
--groups "$FIREBASE_TESTER_GROUPS" \
|
|
--token $FIREBASE_TOKEN
|
|
|
|
# Reusable script for web quality checks
|
|
web-quality-script: &web-quality-script
|
|
name: 🌐 ✅ Web Quality Checks
|
|
script: |
|
|
npm install -g pnpm
|
|
cd apps/web
|
|
pnpm install --frozen-lockfile
|
|
pnpm lint
|
|
pnpm test
|
|
pnpm build
|
|
|
|
# Reusable script for mobile quality checks
|
|
mobile-quality-script: &mobile-quality-script
|
|
name: 📱 ✅ Mobile Quality Checks
|
|
script: |
|
|
dart pub global activate melos
|
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
|
make mobile-install
|
|
make mobile-analyze
|
|
make mobile-test
|
|
|
|
workflows:
|
|
# =================================================================================
|
|
# Quality workflow (Web + Mobile)
|
|
# =================================================================================
|
|
quality-gates-dev:
|
|
name: 🛡️ Quality Gates (Dev)
|
|
working_directory: .
|
|
instance_type: mac_mini_m2
|
|
max_build_duration: 60
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
groups:
|
|
- client_app_dev_credentials
|
|
vars:
|
|
ENV: dev
|
|
scripts:
|
|
- *web-quality-script
|
|
- *mobile-quality-script
|
|
|
|
# =================================================================================
|
|
# Base workflow for client_app
|
|
# =================================================================================
|
|
client-app-base: &client-app-base
|
|
name: Client App Base
|
|
working_directory: .
|
|
instance_type: mac_mini_m2
|
|
max_build_duration: 60
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
artifacts:
|
|
- apps/mobile/apps/client/build/app/outputs/flutter-apk/*.apk
|
|
- apps/mobile/apps/client/build/ios/ipa/*.ipa
|
|
- apps/mobile/apps/client/build/app/outputs/bundle/**/*.aab
|
|
- /tmp/xcodebuild_logs/*.log
|
|
- flutter_drive.log
|
|
cache:
|
|
cache_paths:
|
|
- $HOME/.pub-cache
|
|
- $FCI_BUILD_DIR/apps/mobile/apps/client/build
|
|
- $FCI_BUILD_DIR/apps/mobile/apps/client/.dart_tool
|
|
|
|
# =================================================================================
|
|
# Base workflow for staff_app
|
|
# =================================================================================
|
|
staff-app-base: &staff-app-base
|
|
name: Staff App Base
|
|
working_directory: .
|
|
instance_type: mac_mini_m2
|
|
max_build_duration: 60
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
artifacts:
|
|
- apps/mobile/apps/staff/build/app/outputs/flutter-apk/*.apk
|
|
- apps/mobile/apps/staff/build/ios/ipa/*.ipa
|
|
- apps/mobile/apps/staff/build/app/outputs/bundle/**/*.aab
|
|
- /tmp/xcodebuild_logs/*.log
|
|
- flutter_drive.log
|
|
cache:
|
|
cache_paths:
|
|
- $HOME/.pub-cache
|
|
- $FCI_BUILD_DIR/apps/mobile/apps/staff/build
|
|
- $FCI_BUILD_DIR/apps/mobile/apps/staff/.dart_tool
|
|
|
|
# =================================================================================
|
|
# 💼 Client App Workflows - Android
|
|
# =================================================================================
|
|
client-app-dev-android:
|
|
<<: *client-app-base
|
|
name: 🚚 🤖 Client App Dev (Android → Firebase App Distribution)
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
groups:
|
|
- client_app_dev_credentials
|
|
android_signing:
|
|
- keystore: KROW_CLIENT_DEV
|
|
vars:
|
|
ENV: dev
|
|
scripts:
|
|
- *client-app-android-apk-build-script
|
|
- *distribute-android-script
|
|
|
|
client-app-staging-android:
|
|
<<: *client-app-base
|
|
name: 🚚 🤖 Client App Staging (Android → Firebase App Distribution)
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
groups:
|
|
- client_app_staging_credentials
|
|
android_signing:
|
|
- keystore: KROW_CLIENT_STAGING
|
|
vars:
|
|
ENV: stage
|
|
scripts:
|
|
- *client-app-android-apk-build-script
|
|
- *distribute-android-script
|
|
|
|
client-app-prod-android:
|
|
<<: *client-app-base
|
|
name: 🚚 🤖 Client App Prod (Android → Firebase App Distribution)
|
|
environment:
|
|
groups:
|
|
- client_app_prod_credentials
|
|
android_signing:
|
|
- keystore: KROW_CLIENT_PROD
|
|
vars:
|
|
ENV: prod
|
|
scripts:
|
|
- *client-app-android-apk-build-script
|
|
- *distribute-android-script
|
|
|
|
# =================================================================================
|
|
# 💼 Client App Workflows - iOS
|
|
# =================================================================================
|
|
client-app-dev-ios:
|
|
<<: *client-app-base
|
|
name: 🚚 🍎 Client App Dev (iOS → Firebase App Distribution)
|
|
environment:
|
|
groups:
|
|
- client_app_dev_credentials
|
|
vars:
|
|
ENV: dev
|
|
scripts:
|
|
- *client-app-ios-build-script
|
|
- *distribute-ios-script
|
|
|
|
client-app-staging-ios:
|
|
<<: *client-app-base
|
|
name: 🚚 🍎 Client App Staging (iOS → Firebase App Distribution)
|
|
environment:
|
|
groups:
|
|
- client_app_staging_credentials
|
|
vars:
|
|
ENV: stage
|
|
scripts:
|
|
- *client-app-ios-build-script
|
|
- *distribute-ios-script
|
|
|
|
client-app-prod-ios:
|
|
<<: *client-app-base
|
|
name: 🚚 🍎 Client App Prod (iOS → Firebase App Distribution)
|
|
environment:
|
|
groups:
|
|
- client_app_prod_credentials
|
|
vars:
|
|
ENV: prod
|
|
scripts:
|
|
- *client-app-ios-build-script
|
|
- *distribute-ios-script
|
|
|
|
# =================================================================================
|
|
# 👨🍳 Staff App Workflows - Android
|
|
# =================================================================================
|
|
staff-app-dev-android:
|
|
<<: *staff-app-base
|
|
name: 🚚 🤖 👨🍳 Staff App Dev (Android → Firebase App Distribution)
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
groups:
|
|
- staff_app_dev_credentials
|
|
android_signing:
|
|
- keystore: KROW_STAFF_DEV
|
|
vars:
|
|
ENV: dev
|
|
scripts:
|
|
- *staff-app-android-apk-build-script
|
|
- *distribute-android-script
|
|
|
|
staff-app-staging-android:
|
|
<<: *staff-app-base
|
|
name: 🚚 🤖 👨🍳 Staff App Staging (Android → Firebase App Distribution)
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
groups:
|
|
- staff_app_staging_credentials
|
|
android_signing:
|
|
- keystore: KROW_STAFF_STAGING
|
|
vars:
|
|
ENV: stage
|
|
scripts:
|
|
- *staff-app-android-apk-build-script
|
|
- *distribute-android-script
|
|
|
|
staff-app-prod-android:
|
|
<<: *staff-app-base
|
|
name: 🚚 🤖 👨🍳 Staff App Prod (Android → Firebase App Distribution)
|
|
environment:
|
|
flutter: stable
|
|
xcode: latest
|
|
cocoapods: default
|
|
groups:
|
|
- staff_app_prod_credentials
|
|
android_signing:
|
|
- keystore: KROW_STAFF_PROD
|
|
vars:
|
|
ENV: prod
|
|
scripts:
|
|
- *staff-app-android-apk-build-script
|
|
- *distribute-android-script
|
|
|
|
# =================================================================================
|
|
# 👨🍳 Staff App Workflows - iOS
|
|
# =================================================================================
|
|
staff-app-dev-ios:
|
|
<<: *staff-app-base
|
|
name: 🚚 🍎 👨🍳 Staff App Dev (iOS → Firebase App Distribution)
|
|
environment:
|
|
groups:
|
|
- staff_app_dev_credentials
|
|
vars:
|
|
ENV: dev
|
|
scripts:
|
|
- *staff-app-ios-build-script
|
|
- *distribute-ios-script
|
|
|
|
staff-app-staging-ios:
|
|
<<: *staff-app-base
|
|
name: 🚚 🍎 👨🍳 Staff App Staging (iOS → Firebase App Distribution)
|
|
environment:
|
|
groups:
|
|
- staff_app_staging_credentials
|
|
vars:
|
|
ENV: stage
|
|
scripts:
|
|
- *staff-app-ios-build-script
|
|
- *distribute-ios-script
|
|
|
|
staff-app-prod-ios:
|
|
<<: *staff-app-base
|
|
name: 🚚 🍎 👨🍳 Staff App Prod (iOS → Firebase App Distribution)
|
|
environment:
|
|
groups:
|
|
- staff_app_prod_credentials
|
|
vars:
|
|
ENV: prod
|
|
scripts:
|
|
- *staff-app-ios-build-script
|
|
- *distribute-ios-script
|