using-fastlane-in-flutter-and-ci

Using Fastlane in Flutter and CI

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "using-fastlane-in-flutter-and-ci" with this command: npx skills add rodydavis/skills/rodydavis-skills-using-fastlane-in-flutter-and-ci

Using Fastlane in Flutter and CI

Prerequisites:

Understand what Fastlane is and how it works

Project builds correctly following these docs

Android app setup in Google Play Console

iOS app setup in AppStore Connect

Flutter is installed and your project is created

Steps

Open your Flutter project

Run: cd ios

Run: fastlane init and follow the prompts

Replace the Fastfile contents with this:

#!/bin/bash

echo "App Release Automator by @rodydavis"

action="$1" red=tput setaf 1 green=tput setaf 2 reset=tput sgr0

if [ ${action} = "build" ]; then

echo "${green}Generating built files.. ${reset}"
flutter packages pub run build_runner clean
flutter packages pub run build_runner build --delete-conflicting-outputs

pub global activate pubspec_version
git commit -a -m "Build $(pubver bump patch)"

echo "${green}Building Project...${reset}"
find . -name "*-e" -type f -delete
flutter format .
flutter clean

echo "${green}Project Size: $(find . -name "*.dart" | xargs cat | wc -c)${reset}"

echo "${green}Building APK...${reset}"
flutter build apk

echo "${green}Builing IPA..${reset}"
cd ./ios && pod install && pod repo update && cd ..
flutter build ios

git commit -a -m "Project Rebuilt"

elif [ ${action} = "beta" ]; then

echo "${green}Generating built files..${reset}"
flutter packages pub run build_runner clean
flutter packages pub run build_runner build --delete-conflicting-outputs

pub global activate pubspec_version
git commit -a -m "Beta $(pubver bump patch)"

echo "${green}Building Project...${reset}"
find . -name "*-e" -type f -delete
flutter format .
flutter clean

echo "${green}Project Size: $(find . -name "*.dart" | xargs cat | wc -c)${reset}"

echo "${green}Building APK...${reset}"
flutter build apk

echo "${green}Sending Android to Beta...${reset}"
cd ./android && fastlane beta && cd ..

echo "${green}Builing IPA..${reset}"
flutter build ios

echo "${green}Sending iOS to Beta..${reset}"
cd ./ios && fastlane beta && cd ..

git commit -a -m "Sent to Beta"

elif [ ${action} = "release" ]; then

echo "${green}Generating built files..${reset}"
flutter packages pub run build_runner clean
flutter packages pub run build_runner build --delete-conflicting-outputs

pub global activate pubspec_version
git commit -a -m "Production $(pubver bump minor)"

echo "${green}Building Project...${reset}"
find . -name "*-e" -type f -delete
flutter format .
flutter clean

echo "${green}Project Size: $(find . -name "*.dart" | xargs cat | wc -c)${reset}"

echo "${green}Building APK...${reset}"
flutter build apk

echo "${green}Sending Android to Production...${reset}"
cd ./android && fastlane release && cd ..

echo "${green}Builing IPA..${reset}"
flutter build ios

echo "${green}Sending iOS to Production...${reset}"
cd ./ios && fastlane release && cd ..

git commit -a -m "Sent to Production"

fi

echo "${green}Successfully completed${reset}"

Run: cd .. && cd android

Run: fastlane init and follow the prompts

Replace the Fastfile contents with this:

Uncomment the line if you want fastlane to automatically update itself

update_fastlane

default_platform(:android)

platform :android do desc "Prepare and archive app" lane :prepare do |options| #bundle_install Dir.chdir "../.." do sh("flutter", "packages", "get") sh("flutter", "clean") sh("flutter", "build", "appbundle", "--release") end end

desc "Push a new beta build to Google Play" lane :beta do prepare(release: false) upload_to_play_store( track: 'beta', aab: "../build/app/outputs/bundle/release/app.aab" ) add_git_tag( grouping: "fastlane-builds", prefix: "v", build_number: android_get_version_code ) push_to_git_remote end

desc "Push a new release build to the Google Play" lane :release do prepare(release: true) upload_to_play_store( track: 'production', aab: "../build/app/outputs/bundle/release/app.aab" ) add_git_tag( grouping: "release", prefix: "v", build_number: android_get_version_name ) push_to_git_remote end end

Run: fastlane add_plugin versioning_android and enter your password if needed

Run: cd ..

Now you are ready to launch your app to beta!

For ios run: cd ios && fastlane beta

For android run: cd android && fastlane beta

Stay tuned for an article soon where we use these fastlane sub folders for automating the releases on Github Actions CI

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

flutter-control-and-screenshot

No summary provided by upstream source.

Repository SourceNeeds Review
General

install-flutter-from-git

No summary provided by upstream source.

Repository SourceNeeds Review
General

how-to-build-a-native-cross-platform-project-with-flutter

No summary provided by upstream source.

Repository SourceNeeds Review
General

how-to-build-a-webrtc-signal-server-with-pocketbase

No summary provided by upstream source.

Repository SourceNeeds Review