Flutter CI/CD on Github actions without fastlane

Flutter CI/CD on Github actions without fastlane

Quick and short example of how to run flutter release on github actions without fastlane.

Alexander Thiele · 2 minute read

You don't need fastlane for a flutter release.

Just use the command flutter release ipa to build and release your Flutter app to the apple app store or google play store.

How?

It is actually very simple. There are just a few steps you need to consider:

  • Use the macOS runner and install your Apple certificate and provisioning profile.
  • Install Flutter
  • Build your Flutter IPA file
  • Upload to appstoreconnect

Install Apple Certificates

The magic lies in how you install the apple certificates.

This is the build step of the Github action that saves my created Apple certificates to keychain.

- name: Install apple certificate and provisioning profile env: BUILD_CERTIFICATE_BASE64: ${{ secrets.CERTIFICATES_P12 }} P12_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }} BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.PROVISIONING_PROFILE }} KEYCHAIN_PASSWORD: ${{ secrets.APPLE_APP_PASS }} run: | # create variables CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db # import certificate and provisioning profile from secrets echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH # create temporary keychain security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH security set-keychain-settings -lut 21600 $KEYCHAIN_PATH security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH # import certificate to keychain security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH security list-keychain -d user -s $KEYCHAIN_PATH # apply provisioning profile mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles

The Github Action is now ready to build a flutter app with your own signings.

Install Flutter

We still need to install flutter, but that's easy.

- name: Install Flutter uses: subosito/flutter-action@v2 with: channel: 'stable' flutter-version-file: pubspec.yaml cache: true

build your ipa

And finally build your release ipa including env-dart-define-file, your build number & build name

- name: Building IPA run: | flutter build ipa --release \ --export-options-plist=ios/Runner/ExportOptions.plist \ --dart-define-from-file=env.staging.json \ --build-number $BUILD_NUMBER \ --build-name ${{ github.event.inputs.app_version }}
flutter