This commit is contained in:
Forrest 2026-07-29 16:22:00 -04:00
parent fc22d11df1
commit 27a8a62475
32 changed files with 354 additions and 335 deletions

View file

@ -1,4 +1,4 @@
# Codemagic CI/CD for ratune_mobile (Flutter).
# Codemagic CI/CD for Timbre (Flutter).
# The repo root IS the Flutter project, so scripts run from the app directory
# with no `working_directory` override. Two workflows: Android (Linux) and
# iOS (mac). Docs: https://docs.codemagic.io/yaml/yaml-getting-started/
@ -81,12 +81,27 @@ workflows:
# ---------------------------------------------------------------------------
ios:
name: iOS (unsigned build)
name: iOS (TestFlight)
instance_type: mac_mini_m1
max_build_duration: 60
# Reference NAME of the App Store Connect API key integration you added in
# Codemagic (Teams → Integrations → App Store Connect). Replace the value
# below with whatever you named it there.
integrations:
app_store_connect: Ratune ASC key
environment:
flutter: 3.44.8
java: 17
ios_signing:
distribution_type: app_store
bundle_identifier: com.laforrestchurch.timbre
vars:
# The app's numeric Apple ID (App Store Connect → your app → App
# Information → General → Apple ID). Used to auto-bump the build number
# so TestFlight never rejects a duplicate. Fill in after you create the
# app record in App Store Connect. (Until then the build number falls
# back to 1 — fine for the very first upload.)
APP_STORE_APPLE_ID: 0000000000
cache:
cache_paths:
- $HOME/.pub-cache
@ -96,21 +111,25 @@ workflows:
- *get_deps
- *analyze
- *unit_tests
# Compiles the iOS app without code signing — verifies the build on CI.
# Produces a .app (not an installable/uploadable .ipa).
- name: Build iOS (no codesign)
script: flutter build ios --release --no-codesign
- name: Fetch signing files
# Pulls (or creates) the distribution cert + provisioning profile for
# the bundle id via the App Store Connect integration, and writes the
# export_options.plist the build step reads.
script: xcode-project use-profiles
- name: Build signed IPA
script: |
BUILD_NUMBER=$(app-store-connect get-latest-testflight-build-number "$APP_STORE_APPLE_ID" 2>/dev/null || echo 0)
flutter build ipa --release \
--build-number=$(( BUILD_NUMBER + 1 )) \
--export-options-plist=/Users/builder/export_options.plist
artifacts:
- build/ios/iphoneos/*.app
- flutter_drive.log
# --- To produce a signed, uploadable IPA instead: configure App Store
# --- Connect + signing in Codemagic (Teams → Integrations → App Store
# --- Connect), then add `ios_signing` to `environment` and replace the
# --- build step with:
# - name: Set up provisioning profiles
# script: xcode-project use-profiles
# - name: Build IPA
# script: flutter build ipa --release --export-options-plist=/Users/builder/export_options.plist
# --- with artifacts: build/ios/ipa/*.ipa and
# --- publishing.app_store_connect.submit_to_testflight: true
- build/ios/ipa/*.ipa
publishing:
app_store_connect:
auth: integration
submit_to_testflight: true
# Internal testers automatically receive every build once Apple finishes
# processing (no Beta App Review). To also push to a named group,
# uncomment and match the group name from App Store Connect → TestFlight:
# beta_groups:
# - Internal Testers