shady.ai icon indicating copy to clipboard operation
shady.ai copied to clipboard

[DOCS] - Create a document about using Fastlane for Flutter

Open BrutalCoding opened this issue 1 year ago • 1 comments

Is your feature request related to a problem? Please describe. The process of building, signing and deploying apps to their official respective stores can take hours of manual work.

If I were to do this manually, I would have to compile and wait between each platform.

A single platform such as iOS could already take 15min from source code to App Store review submission. This is depending on the complexity of course.

Here's a breakdown of what is involved if I would create an iOS build manually (more than 15min):

  • Run tools to analyze code for linter issues, unused code, unused files, unit tests etc.
  • Compiling Flutter source code to unsigned iOS app
  • Syncing keychain with up-to-date provisioning profiles / certificates
  • Analyzing commits and bumping up the version for a semantic release
  • Bumping up the version number in all places (source code, changelog, git tag, git release etc)
  • Overwrite iOS icon assets with a badge on top of it (note: 10+ images due to various sizes)
  • Creating a PR (Pull Request) and fill in all the details
  • Uploading git release artifacts (.ipa)
  • Upload signed build to the App Store ..And so forth..

I definitely missed some steps. Think of:

  • Automatically running an E2E (end-to-end) test going through different screens
  • Automatically creating screenshots + adding text overlays on top of screenshots
  • Upload and replace existing screenshots @ App Store

And that was just 1 flavor for 1 platform. Would be nicer to have alpha, beta and prod flavors right?

Describe the solution you'd like You can see that DevOps can be frustating, and no matter what tool I end up using, it will be better than doing this manually. I've had good experience with Fastlane to deploy iOS & Android apps, so I will make that an important part of ShadyAI too.

Describe alternatives you've considered An alternative is do build everything in a Docker container, however, Docker container running MacOS is a bit.. shady.

From my understanding, emulating MacOS in Docker on non-Apple hardware is a no-go. But if you are running it on Apple hardware (e.g. Macbooks), it is allowed to run up to 2 MacOS VM's for purposes such as CI/CD (not commercially).

There's more:

  • Cirrus Labs Tart - A pre-configured Flutter+MacOS VM for sillicon based Macs
  • Any cloud CI/CD platform such as GitHub Actions, CodeMagic.io or CirrusCI

All the alternatives are interesting, but none of them is a direct 1:1 replacement for Fastlane. I think I should still configure Fastlane within any of the alternatives mentioned. That's why I'm starting off with Fastlane.

BrutalCoding avatar Apr 29 '23 08:04 BrutalCoding