Files
shared-actions/flutter-build-ios

Flutter Build iOS

Composite action to install Apple signing certificates and provisioning profiles into an isolated temporary keychain, build a Flutter iOS .ipa, and optionally push to TestFlight and Shorebird.

Inputs

Name Description Required Default
working_directory Path to the Flutter app package directory. No .
export_options_plist Relative path inside working_directory to ExportOptions.plist. No ios/ExportOptions.plist
build_args Extra arguments passed to flutter build ipa / ios. No ''
disable_spm Disable Flutter Swift Package Manager before building. No true
artifact_prefix Optional prefix for copied versioned IPA in output_dir. No ''
output_dir Directory to copy versioned IPA into when artifact_prefix is set. No artifacts
certificate_base64 Base64-encoded Apple iOS distribution .p12 certificate. No ''
certificate_password Password for the Apple .p12 certificate. No ''
provisioning_profile_base64 Base64-encoded .mobileprovision profile. No ''
asc_key_id App Store Connect API Key ID. No ''
asc_issuer_id App Store Connect API Issuer ID. No ''
asc_private_key App Store Connect API Private Key (.p8 content). No ''
apple_id_username Fallback Apple ID email for altool upload. No ''
apple_id_password Fallback Apple ID app-specific password for altool upload. No ''
upload_to_testflight Whether to upload signed IPA to TestFlight when credentials are provided. No true
shorebird_token Shorebird token for optional Shorebird iOS release. No ''

Outputs

Name Description
version Resolved package version from pubspec.yaml.
ipa_path Path to the built or packaged .ipa file.
signed 'true' if a signed App Store IPA was exported, 'false' otherwise.

Example Usage

- name: Build & Release iOS
  uses: rodydavis/shared-actions/flutter-build-ios@main
  with:
    working_directory: packages/hfw_flutter
    artifact_prefix: hfw-ios
    certificate_base64: ${{ secrets.IOS_CERTIFICATE_BASE64 }}
    certificate_password: ${{ secrets.IOS_CERTIFICATE_PWD }}
    provisioning_profile_base64: ${{ secrets.IOS_PROVISIONING_PROFILE_BASE64 }}
    asc_key_id: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
    asc_issuer_id: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
    asc_private_key: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY }}
    shorebird_token: ${{ secrets.SHOREBIRD_TOKEN }}