Flutter CI/CD Pipelines — Build Both Platforms from a Single Pipeline
Flutter's cross-platform promise means one codebase, but two completely different build and distribution systems. Android needs Gradle, signing keystores, and Play Store upload. iOS needs Xcode, provisioning profiles, and App Store Connect. We build pipelines that handle both platforms reliably, so you can focus on writing Dart, not wrestling with build tools.
Need this done for your project?
We implement, you ship. Async, documented, done in days.
Why Flutter Needs a Proper CI/CD Pipeline
Flutter apps target at least two platforms, each with its own build system, signing requirements, and distribution channel. Android builds use Gradle and require a keystore for release signing. iOS builds need Xcode, Apple Developer certificates, and provisioning profiles. Managing these on developer machines is fragile; managing them in CI is essential.
Code signing is the single biggest pain point in mobile CI/CD. Android keystores need to be securely stored and accessed in CI. iOS signing requires certificates, provisioning profiles, and Apple's notoriously finicky code signing identity matching. A misconfigured signing setup means your pipeline produces APKs and IPAs that users cannot install.
Flutter's pub get can be slow when resolving the dependency tree, and the Dart SDK plus Flutter SDK together are over 1 GB. Without caching, every pipeline run spends 5+ minutes just setting up the environment before any of your code runs.
Our Flutter CI/CD Implementation
We configure parallel build jobs for Android and iOS, sharing a common test stage. The test stage runs flutter test with coverage collection, flutter analyze for static analysis, and dart format --set-exit-if-changed for code style. Widget tests and unit tests run in seconds; integration tests use flutter drive or integration_test with an emulator/simulator.
For Android, the pipeline builds a release APK or App Bundle (flutter build appbundle) with the signing keystore injected from CI secrets. We configure Fastlane or direct Play Store API integration to upload to internal testing, closed beta, or production tracks. Version codes are auto-incremented from the CI build number.
For iOS, we use match (via Fastlane) or manual certificate management to handle signing identities. The pipeline runs on a macOS runner (required for iOS builds), executes flutter build ipa, and uploads to TestFlight via Fastlane or xcrun altool. Provisioning profiles are stored encrypted in the repository or fetched from a secure vault.
What You Get
A Flutter CI/CD pipeline for both platforms:
- Parallel builds — Android and iOS building simultaneously after shared test stage
- Flutter SDK caching — SDK and pub cache cached, cutting setup time by 80%
- Automated testing — unit, widget, and integration tests with coverage reporting
- Android signing — keystore securely managed, App Bundle production-signed
- iOS signing — certificates and provisioning profiles via Fastlane match
- Store deployment — automated upload to Play Store and TestFlight
- Version management — build numbers auto-incremented from CI pipeline
Why Anubiz Engineering
Ready to get started?
Skip the research. Tell us what you need, and we'll scope it, implement it, and hand it back — fully documented and production-ready.