Created
November 19, 2022 12:28
-
-
Save vbalagovic/cb3165499de5d8a8b6ef4e9a3f93cf37 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fastlane_require 'dotenv' | |
default_platform(:android) | |
platform :android do | |
# Have an easy way to get the root of the project | |
def root_path | |
Dir.pwd.sub(/.*\Kfastlane/, '').sub(/.*\Kandroid/, '').sub(/.*\Kios/, '').sub(/.*\K\/\//, '') | |
end | |
# Have an easy way to run flutter tasks on the root of the project | |
lane :sh_on_root do |options| | |
command = options[:command] | |
sh("cd #{root_path} && #{command}") | |
end | |
private_lane :build_apk do | |
env = ENV['ANDROID_SCHEME'] | |
params = env == "dev" ? '--flavor dev -t lib/main_dev.dart ' : '--flavor prod -t lib/main_prod.dart ' | |
desc "Building #{env} Android APK" | |
sh_on_root(command: "fvm use #{ENV['FLUTTER_VERSION']} && fvm flutter build apk --split-per-abi #{params}") | |
end | |
lane :deploy_staging do | |
build_apk | |
firebase_app_distribution( | |
app: ENV['ANDROID_FIREBASE_APP_DISTRIBUTION_APP'], | |
testers: ENV['ANDROID_FIREBASE_APP_DISTRIBUTION_TESTERS'], | |
android_artifact_type: "APK", | |
android_artifact_path: "#{root_path}/build/app/outputs/flutter-apk/app-armeabi-v7a-#{ENV['ANDROID_SCHEME']}-release.apk", | |
release_notes: ENV['ANDROID_FIREBASE_APP_DISTRIBUTION_RELEASE_NOTES'], | |
service_credentials_file: ENV['ANDROID_FIREBASE_APP_DISTRIBUTION_CREDENTIALS_FILE_PATH'], | |
) | |
end | |
lane :build do | |
# Reuse parent fastfile tasks | |
sh_on_root(command: "fvm use #{ENV['FLUTTER_VERSION']} && fvm flutter build appbundle --flavor prod -t lib/main_prod.dart ") | |
end | |
lane :deploy_beta do | |
path = '../app/build.gradle' | |
re = /versionCode\s+(\d+)/ | |
vname = /versionName\s+"(\d+)\.(\d+)\.(\d+)"/ | |
s = File.read(path) | |
version_name = "" | |
version_code = 1 | |
#s.gsub(re, (versionCode + 1).to_s) | |
s.scan(re) { |match| | |
vr = "versionCode #{match[0].to_i}" | |
version_code = match[0].to_i | |
} | |
s.scan(vname) { |match| | |
versionName = match | |
vr = "versionName \"#{match[0].to_i}.#{match[1].to_i}.#{match[2].to_i}\"" | |
version = match[0] + '.' + match[1] + '.' + match[2]; | |
version_name = version.to_s | |
} | |
build | |
upload_to_play_store( | |
track: "internal", | |
version_code: version_code, | |
version_name: version_name.to_s, | |
skip_upload_changelogs: true, | |
skip_upload_metadata: true, | |
skip_upload_images: true, | |
skip_upload_screenshots: true, | |
skip_upload_apk: true, | |
aab: "#{root_path}/build/app/outputs/bundle/prodRelease/app-prod-release.aab" | |
) # Uploads the APK built in the gradle step above and releases it to all production users | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment