You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This GitHub Action prepares, checks, builds and deploys Flutter applications for iOS, Android, Web, macOS, Windows, and Linux. It supports modular builds via boolean flags and deployment to App Store Connect, Firebase App Distribution, Firebase Hosting, Play Store, Microsoft Store, and Snap Store.
Features
Modular Architecture: Use the full pipeline or individual actions independently.
Pre-build hooks: Automatic build_runner and gen-l10n code generation.
Checks and Testing: Run checks and tests with coverage reports.
Build & Signing: Automated signing setup for iOS and Android and support for iOS, Android, Web, macOS, Windows, and Linux builds.
Publish:
iOS: App Store Connect, Firebase App Distribution.
Android: Play Store, Firebase App Distribution, Huawei App Gallery (future).
Web: Firebase Hosting, Github Pages.
macOS: App Store Connect.
Linux: Snap Store.
Windows: Windows Store.
Usage
You have two options: use the main action to manage the full build and deployment of a Flutter project on a single platform, or use actions modularly to create your own flow.
Main action
The main action (action.yml) is a single-entry-point GitHub Action that manages the full CI/CD pipeline for a Flutter application on a chosen platform. It orchestrates four sequential stages:
Prepare
Sets up the Flutter environment, runs flutter pub get, and optionally executes code generation steps — build_runner (for generated Dart code) and gen-l10n (for localization files) — so the app is fully ready to build.
Check (Test & Analyze)
Runs static analysis, formatting checks, dependency license validation, and unit/widget tests — optionally with coverage reports. This acts as a quality gate before any build artifact is produced.
Build
Compiles the Flutter app for the target platform. Supported platforms are iOS, Android, Web, macOS, Windows, and Linux. Platform-specific signing is handled automatically for iOS (certificates/provisioning profiles) and Android (keystore).
Publish
Deploys the built artifact to one or more distribution destinations based on boolean flags provided as inputs. Supported destinations are:
iOS/macOS → App Store Connect, Firebase App Distribution
Android → Play Store, Firebase App Distribution
Web → Firebase Hosting, GitHub Pages
Linux → Snap Store
Windows → Microsoft Store
Make sure you are building the right version of the app for the right platform where you are trying to publish.
The idea is that by setting a handful of input flags, a single workflow step covers the entire lifecycle from a clean repo to a published release — with no need to wire up the individual modular actions manually.
Modular Actions
Each step of the pipeline is available as an independent action. This gives you full control over your CI/CD pipeline.
This action is primarily tested with the latest Flutter versions and is not tested with older versions of Flutter.
In particular, for monorepos, this package relies on workspaces to work correctly. Other implementations are not supported at the moment.
Notes
macOS/iOS: Requires macos runner.
Windows: Requires windows runner.
Linux: Requires ubuntu runner.
Inputs Reference
Flutter
Input
Default
Description
flutter-version
Flutter version to use. Defaults to latest stable if omitted.
flutter-channel
stable
Flutter channel (stable, beta, dev, master).
Prepare
Input
Default
Description
run-build-runner
false
Run build_runner for all packages with a build_runner dependency.
run-gen-l10n
false
Run gen-l10n for all packages with an intl dependency.
gen-l10n-fails-if-untranslated
false
Fail if untranslated strings are found after gen-l10n.
Check
Input
Default
Description
run-analyze
false
Run flutter analyze.
run-test
false
Run unit and widget tests.
run-license-check
false
Validate dependency licenses against an allowlist.
analyze-fails-if-infos
false
Fail analyze step on info-level issues.
analyze-fails-if-warnings
false
Fail analyze step on warning-level issues.
licenses-conf-path
Path to a YAML file listing compatible licenses. Required when run-license-check is true.
test-run-coverage
false
Collect code coverage during tests.
test-create-coverage-report
false
Generate an HTML coverage report using lcov/genhtml.