Files
sure/mobile/docs/iOS_TESTFLIGHT.md
2026-02-18 10:31:24 +01:00

1.9 KiB

iOS TestFlight GitHub Action

This repository now includes .github/workflows/ios-testflight.yml, which builds a signed iOS IPA and uploads it to TestFlight.

What must be in the repo

  • The workflow file itself: .github/workflows/ios-testflight.yml
  • Existing app signing identifiers in Xcode:
    • Bundle ID am.sure.mobile (or your custom value in the workflow)
  • Flutter assets and source already in mobile/

Trigger paths

  • Manual dispatch from the workflow UI.
  • Tag push matching ios-v*.
  • Called from .github/workflows/mobile-release.yml after the shared build job, so tagging mobile-v* now creates the GitHub release and uploads to TestFlight in one pipeline.

Required GitHub Secrets

Set these in Settings → Secrets and variables → Actions:

  • APP_STORE_CONNECT_API_KEY_ID
  • APP_STORE_CONNECT_API_ISSUER_ID
  • APP_STORE_CONNECT_API_KEY_BASE64
    • Base64 version of the .p8 private key content
  • IOS_TEAM_ID
  • IOS_KEYCHAIN_PASSWORD
  • IOS_DISTRIBUTION_P12_BASE64
  • IOS_DISTRIBUTION_P12_PASSWORD
  • IOS_DISTRIBUTION_CERT_NAME
    • Usually iPhone Distribution
  • IOS_PROVISIONING_PROFILE_NAME
  • IOS_PROVISIONING_PROFILE_BASE64

Do not commit private keys, .p12, .mobileprovision or .p8 files to the repository.

Triggering

  • Run manually: Actions → iOS TestFlight → Run workflow
  • Push a tag that matches ios-v* (for example ios-v1.2.3)
  • Use an API Key with App Manager or Developer role
  • Create/download an iOS Distribution certificate (.p12), convert to base64 for IOS_DISTRIBUTION_P12_BASE64
  • Create and distribute an App Store provisioning profile for am.sure.mobile
  • Base64-encode the .mobileprovision file for IOS_PROVISIONING_PROFILE_BASE64

Output

  • IPA artifact: ios-ipa-testflight
  • Uploaded IPA to TestFlight on successful upload step