nkbmusic/codemagic.yaml
metatroncubeswdev fc989b4c77 Store release setup: app icon, launch screen, iOS config, Android signing, Codemagic
- App icon from the NK emblem (iOS set, Android adaptive icon, Play 512 icon)
- Dark launch screen on both platforms; app locked to portrait; iPhone-only
- Info.plist: display name, photo/camera reasons, export compliance
- Android release signing from key.properties or Codemagic CM_KEYSTORE_*
- codemagic.yaml: iOS to TestFlight, Android to Play internal testing
- Account deletion web page; fix trailing dot in email links
- docs/app-store-release.md: step-by-step store guide

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 00:06:31 -04:00

108 lines
3.0 KiB
YAML

# Codemagic builds for Nanga Kathai. Setup steps: docs/app-store-release.md
#
# Needed in Codemagic (Team settings / app settings):
# - Environment variable group "nk_app": SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY, MEDIA_BASE_URL
# - App Store Connect API key integration named "NK App Store Connect" (iOS)
# - Android keystore uploaded with reference name "nk_upload_keystore" (Android)
# - Variable GCLOUD_SERVICE_ACCOUNT_CREDENTIALS in group "nk_google_play" (Android publishing)
definitions:
write_env: &write_env
name: Write env.json from Codemagic variables
script: |
cat > env.json <<EOF
{
"SUPABASE_URL": "$SUPABASE_URL",
"SUPABASE_PUBLISHABLE_KEY": "$SUPABASE_PUBLISHABLE_KEY",
"MEDIA_BASE_URL": "$MEDIA_BASE_URL"
}
EOF
checks: &checks
name: Analyze and test
script: |
flutter pub get
flutter analyze --no-fatal-infos
flutter test
email: &email
email:
recipients:
- info@metatroncubesolutions.com
notify:
success: true
failure: true
workflows:
ios-release:
name: iOS release (TestFlight)
instance_type: mac_mini_m2
max_build_duration: 60
integrations:
app_store_connect: NK App Store Connect
environment:
groups:
- nk_app
flutter: stable
xcode: latest
cocoapods: default
ios_signing:
distribution_type: app_store
bundle_identifier: com.metatroncubesolutions.nangaKathai
triggering:
events:
- tag
tag_patterns:
- pattern: 'v*'
scripts:
- *write_env
- *checks
- name: Use the App Store signing profiles
script: xcode-project use-profiles
- name: Build the iOS app
script: |
flutter build ipa --release \
--build-number=$BUILD_NUMBER \
--dart-define-from-file=env.json \
--export-options-plist=/Users/builder/export_options.plist
artifacts:
- build/ios/ipa/*.ipa
- /tmp/xcodebuild_logs/*.log
publishing:
<<: *email
app_store_connect:
auth: integration
submit_to_testflight: true
android-release:
name: Android release (Play internal testing)
instance_type: linux_x2
max_build_duration: 45
environment:
groups:
- nk_app
- nk_google_play
flutter: stable
android_signing:
- nk_upload_keystore
triggering:
events:
- tag
tag_patterns:
- pattern: 'v*'
scripts:
- *write_env
- *checks
- name: Build the Android app bundle
script: |
flutter build appbundle --release \
--build-number=$((BUILD_NUMBER + 1)) \
--dart-define-from-file=env.json
artifacts:
- build/app/outputs/bundle/release/*.aab
- build/app/outputs/mapping/release/mapping.txt
publishing:
<<: *email
google_play:
credentials: $GCLOUD_SERVICE_ACCOUNT_CREDENTIALS
track: internal
submit_as_draft: true