using-fastlane-in-flutter-and-ci について
Flutter プロジェクト向けに、iOS と Android の Fastlane 設定およびベータ版のリリース手順を説明するガイドです。アプリのリリースや CI 自動化を準備する開発者向けです。
主な機能
- 01iOS と Android の Fastlane 設定
- 02versioning_android プラグインの利用
- 03ベータ版リリースレーンの実行
活用シーン
- 01Flutter アプリのストア公開手順の設定
- 02iOS または Android 向けベータ版の公開
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rodydavis/ skills --skill using-fastlane-in-flutter-and-ciインストール後、Claude Code で/using-fastlane-in-flutter-and-ciを入力して読み込まれたか確認します。
詳細
Flutter と CI で Fastlane を使用する
前提条件:
-
Fastlane とは何か、どのように動作するかを理解していること
-
こちらのドキュメントに従って、プロジェクトを正しくビルドできること
-
Google Play Consoleで Android アプリのセットアップが完了していること
-
AppStore Connectで iOS アプリのセットアップが完了していること
-
Flutter がインストール済みで、プロジェクトが作成されていること
手順
-
Flutter プロジェクトを開きます
-
cd iosを実行します -
fastlane initを実行し、表示されるプロンプトに従います -
Fastfile の内容を次のように置き換えます:
#!/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}"
-
cd .. && cd androidを実行します -
fastlane initを実行し、表示されるプロンプトに従います -
Fastfile の内容を次のように置き換えます:
# 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
-
fastlane add\_plugin versioning\_androidを実行し、必要に応じてパスワードを入力します -
cd ..を実行します
これで、アプリをベータ版としてリリースする準備が整いました!
iOS の場合:cd ios && fastlane betaを実行します
Android の場合:cd android && fastlane betaを実行します
Github Actions CI でリリースを自動化するために、これらの Fastlane サブフォルダーを使う方法を紹介する記事を近日公開予定です。