Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
BrutalCoding opened this issue Apr 29, 2023 · 1 comment
Open

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

BrutalCoding opened this issue Apr 29, 2023 · 1 comment
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@BrutalCoding
Copy link
Owner

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 BrutalCoding added documentation Improvements or additions to documentation enhancement New feature or request labels Apr 29, 2023
@BrutalCoding BrutalCoding self-assigned this Apr 29, 2023
@BrutalCoding
Copy link
Owner Author

For my own reference, here's my original Reddit comment initiating this idea. Be aware that I haven't started on a blog post yet - I'd prefer to have my own blog website hosted first.

My original comment: https://www.reddit.com/r/FlutterDev/comments/12yry7x/comment/jhr6115/?utm_source=share&utm_medium=web2x&context=3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant