mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
Phase 2 of iOS CI. Full signed pipeline that: 1) Decodes secrets: - APPLE_DIST_CERT_P12_BASE64 + password → temp keychain - APPLE_PROVISIONING_PROFILE_BASE64 → ~/Library/MobileDevice/... - APPLE_API_KEY_P8_BASE64 → ~/.appstoreconnect/private_keys/ 2) Parses the .mobileprovision for its UUID + Name (used in ExportOptions). 3) Generates ios/ExportOptions.plist dynamically with the right Team ID + profile name + 'app-store' method. 4) Runs flutter build ipa --release --export-options-plist=... 5) Uploads the .ipa to TestFlight via xcrun altool with the API key. 6) Always cleans up keychain + temp credentials, even on failure. Trigger: workflow_dispatch ONLY (manual). TestFlight uploads consume a build number with every push — we don't want auto-trigger spamming TestFlight. Bump the build number in scripts/ios/app_env.sh before each TestFlight push (or wire a workflow_dispatch input later). All Apple secrets (and the Trocador ones reused from Linux/Android) are already configured in Gitea Actions. If signing fails on first run: most likely the profile name extracted from the .mobileprovision doesn't match what Xcode expects, OR the distribution cert in the .p12 doesn't match what the profile pins. The keychain identity sanity-check + ExportOptions.plist echo in the logs will tell us which.