A 2025 Flutter CI/CD Flow using Jenkins, Docker (DinD), and fastlane Hosted on a Mac

Banner - 2025 Flutter Mac-based CI/CD w/ Jenkins + Docker + fastlane

And how to skip over 300 gotchas when building a CI/CD flow.

I am providing all the files and settings used to successfully deploy my Flutter apps to both stores using the tech listed in the title. Although a bit limited in scope, I do this in the hopes it helps others in their CI/CD adventures.

Due to the expected high rate of build failures inherent in learning such an intricate concept as CI/CD, I opted out of paid (or restrictive-free) CI/CD services like Codemagic or Bitrise during my training period. Instead, I opted to learn Jenkins (this post) and GitHub Actions (previous post). And because I’m a solo developer running Jenkins privately on localhost, I also opted not to create an auto-trigger with GitHub, and instead, manually trigger the CD flow via a shell script once it has been decided that main is ready for deployment.

The aim here is to simply lay out an overview of the entire flow, and provide a starting point covering all the files and structures referenced within the flow.

Simple Outline of CI/CD Flow

2025 Flutter Mac-based CI/CD w/ Jenkins + Docker + fastlane
  • Update feature/bug branch:
    • Create PR to merge to `main`.
  • When decision is made to release the app:
    • Start up Docker Desktop (if not already).
    • Start up Jenkins using a few scripts.
    • Deploy the app using a script that will prompt for version updates and update relevant release notes.
  • Open the Jenkins dashboard:
    • Select the main Pipeline build project → Console output
    • If successful, select the iOS Pipeline build project → Console output

Getting Started

The quickest way to get started is to read the root README.md. It provides crucial steps to get everything set up properly and where to go from there. And while there are dozens of steps that route through a handful of files, these starter files can potentially help to circumvent hundreds of detailed hurdles and challenges when it comes to setting everything up. Or at least that’s my hope that it save someone some time, somewhere.

Forest-level Flow

Within the GitHub repository, there is a file provided in the assets folder called dataclumps.json. That file can be imported into the Data Clump Flow Analysis Tool using the directions provided in the dataclumpflow.txt file.

Summary

While DevOps has been a driving force in my last few months, having successfully pushed one of my apps to both stores using this flow, I’m looking forward to getting back to building something special with Flutter and Dart. 💙

Always open to feedback!

Cheers!
Keith | https://keithdc.com


Blog Comments Notification: As a general rule, comments with URLs will typically be discarded as spam, unless they’re verifiable and directly related to Flutter development. Thank you for sharing and keeping things on-topic.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

Social media & sharing icons powered by UltimatelySocial