December 5, 2020

Flutter CI/CD with Codemagic

Previously for my Flutter apps, I was using Microsoft's AppCenter. I decided to move away from this for 2 reasons. First being the lack of support for Flutter. So, you'd need a seperate build for every app (Android, iOS, Web, Windows, etc.). Second, the pre and post scripting to get it to work with Flutter.

So, I stumbled across Codemagic. Codemagic provides 500 minutes per month for free, which is a pretty nice deal. I don't use it THAT much, so 500 is plenty for me. They also offer a pay as you go plan. All build are done on a Mac OS VM.

But, the main reason I switched to Codemagic is because they actually support Flutter! 1 build that tests all of the apps! This simplifies a lot of the process I was doing with MS AppCenter.

Getting Started with Codemagic

After creating an account, you can add an application from a custom source, whether that be GitHub, GitLab, BitBucket, or any other.

Screen Shot 20201204 at 20.56.12.png

From there, you a presented with a screen where you can set your various build options. This includes things such as the build triggers, environment variables, dependency caching, tests, publishing, pre and post build scripts, and more!

Screen Shot 20201204 at 20.56.34.png

Once your options are set, you are ready to build! I noticed the build did take a bit longer than expected. Well, my iOS build took longer than expected. Not sure why, but something I want to look into.

Below is what the build screen looks like.

Screen Shot 20201204 at 20.07.30.png

Conclusions

Overall, my experience with Codemagic thus far has been great! The integration with Flutter is smooth. It was super easy to get set up compared to AppCenter. I literally had my app being built in less than 10 minutes and that's pretty awesome if you ask me.

If you are looking for a CI/CD solution for Flutter or any other Codemagic supported softwares, definitely give them a look as they offer a reasonable free plan as well as reasonably priced pay as you go services.

tags: programming flutter ci cd dart