Skip to content

Indy9000/flutter-automatic-deploy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

App Store Connect Automation (Dart)

Automates release notes and review submission after IPA upload to App Store Connect.

Built by Filip Kowalski
X: @filippkowalski
Website: fkowalski.com
Support: buymeacoffee.com/filipkowalski

Setup

1. Install Dependencies

dart pub get

2. Set Environment Variables

export APP_STORE_API_KEY_ID=your_key_id
export APP_STORE_ISSUER_ID=your_issuer_id
export APP_STORE_P8_KEY_PATH=/path/to/AuthKey.p8  # optional

You can find these values in App Store Connect > Users and Access > Keys.

Default P8 key path: ~/.appstoreconnect/private_keys/AuthKey_{KEY_ID}.p8

Usage

Basic Usage

dart submit_to_app_store.dart 1.13.0

With Build Number

dart submit_to_app_store.dart 1.13.0+30

Custom Project Path

dart submit_to_app_store.dart 1.13.0 --project-path /path/to/project

Dry Run (Preview Only)

dart submit_to_app_store.dart 1.13.0 --dry-run

Override Bundle ID

dart submit_to_app_store.dart 1.13.0 --bundle-id com.example.app

What It Does

  1. Detects Bundle ID - Auto-detects from your Xcode project
  2. Finds Your App - Locates the app in App Store Connect
  3. Waits for Build - Waits for the uploaded build to finish processing
  4. Creates/Updates Version - Gets existing or creates new version
  5. Links Build - Associates the build with the version
  6. Adds Release Notes - Adds notes to all localizations
  7. Submits for Review - Submits the version for App Store review

Release Notes

Default release notes: "Bug fixes and improvements."

To customize, edit the releaseNotes constant in submit_to_app_store.dart.

Making It Executable

chmod +x submit_to_app_store.dart
./submit_to_app_store.dart 1.13.0

Workflow Integration

Typical workflow:

  1. Build and upload IPA:

    flutter build ipa
    xcrun altool --upload-app -f build/ios/ipa/*.ipa \
      --type ios \
      --apiKey $APP_STORE_API_KEY_ID \
      --apiIssuer $APP_STORE_ISSUER_ID
  2. Run this script:

    dart submit_to_app_store.dart 1.13.0+30

Key Differences from Python Version

  • Uses jose package for JWT token generation (ES256 signing)
  • Native Dart async/await instead of blocking calls
  • Strong typing with Dart's type system
  • Uses args package for command-line argument parsing
  • Uses http package for HTTP requests

Troubleshooting

"Missing dependencies"

Run dart pub get

"P8 key file not found"

Set APP_STORE_P8_KEY_PATH or place the key at: ~/.appstoreconnect/private_keys/AuthKey_{KEY_ID}.p8

"App not found"

Verify the bundle ID matches your app in App Store Connect

"Build not found"

Make sure you uploaded the IPA first using xcrun altool

License

This is a conversion of the original Python script to Dart, maintaining the same functionality and workflow.

About

Automate version bumping, changelog generation, and App Store/Play Store releases for Flutter projects

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 52.6%
  • Shell 47.4%