mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-03-13 03:17:48 -04:00
133 lines
3.8 KiB
Ruby
133 lines
3.8 KiB
Ruby
# This file contains the fastlane.tools configuration
|
|
# You can find the documentation at https://docs.fastlane.tools
|
|
#
|
|
# For a list of all available actions, check out
|
|
#
|
|
# https://docs.fastlane.tools/actions
|
|
#
|
|
# For a list of all available plugins, check out
|
|
#
|
|
# https://docs.fastlane.tools/plugins/available-plugins
|
|
#
|
|
|
|
# Uncomment the line if you want fastlane to automatically update itself
|
|
# update_fastlane
|
|
|
|
default_platform(:android)
|
|
|
|
platform :android do
|
|
desc "Runs all the tests"
|
|
lane :test do
|
|
gradle(task: "test")
|
|
end
|
|
|
|
desc "Deploy a new version to the internal track on Google Play"
|
|
lane :internal do
|
|
begin
|
|
aab_path = build_google_release
|
|
upload_to_play_store(
|
|
track: 'internal',
|
|
aab: aab_path,
|
|
release_status: 'completed',
|
|
skip_upload_apk: true,
|
|
skip_upload_metadata: true,
|
|
skip_upload_changelogs: true,
|
|
skip_upload_images: true,
|
|
skip_upload_screenshots: true,
|
|
)
|
|
rescue => exception
|
|
if exception.message.include?("Google Api Error: forbidden: A release with version code") && exception.message.include?("already exists for this track")
|
|
UI.message("This version code is already on the internal track. No action needed.")
|
|
else
|
|
raise exception
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "Promote from internal track to the closed track on Google Play"
|
|
lane :closed do
|
|
upload_to_play_store(
|
|
track: 'internal',
|
|
track_promote_to: 'NewAlpha',
|
|
version_codes: [ENV["VERSION_CODE"].to_i],
|
|
release_status: 'completed',
|
|
skip_upload_apk: true,
|
|
skip_upload_metadata: true,
|
|
skip_upload_changelogs: true,
|
|
skip_upload_images: true,
|
|
skip_upload_screenshots: true,
|
|
)
|
|
end
|
|
|
|
desc "Promote from internal track to the open track on Google Play"
|
|
lane :open do
|
|
upload_to_play_store(
|
|
track: 'internal',
|
|
track_promote_to: 'beta',
|
|
version_codes: [ENV["VERSION_CODE"].to_i],
|
|
release_status: 'draft',
|
|
skip_upload_apk: true,
|
|
skip_upload_metadata: true,
|
|
skip_upload_changelogs: true,
|
|
skip_upload_images: true,
|
|
skip_upload_screenshots: true,
|
|
)
|
|
end
|
|
|
|
desc "Promote from internal track to the production track on Google Play"
|
|
lane :production do
|
|
upload_to_play_store(
|
|
track: 'internal',
|
|
track_promote_to: 'production',
|
|
version_codes: [ENV["VERSION_CODE"].to_i],
|
|
release_status: 'draft',
|
|
skip_upload_apk: true,
|
|
skip_upload_metadata: true,
|
|
skip_upload_changelogs: true,
|
|
skip_upload_images: true,
|
|
skip_upload_screenshots: true,
|
|
)
|
|
end
|
|
|
|
desc "Build the F-Droid release"
|
|
lane :fdroid_build do
|
|
gradle(
|
|
task: "clean assembleFdroidRelease",
|
|
properties: {
|
|
"android.injected.version.name" => ENV['VERSION_NAME'],
|
|
"android.injected.version.code" => ENV['VERSION_CODE']
|
|
}
|
|
)
|
|
end
|
|
|
|
desc "Get the highest version code from all Google Play tracks"
|
|
lane :get_highest_version_code do
|
|
require 'set'
|
|
all_codes = Set.new
|
|
tracks = ['internal', 'alpha', 'beta', 'production']
|
|
tracks.each do |track|
|
|
begin
|
|
codes = google_play_track_version_codes(track: track)
|
|
all_codes.merge(codes.map(&:to_i)) if codes
|
|
rescue => e
|
|
UI.message("Could not fetch version codes for track #{track}: #{e.message}")
|
|
end
|
|
end
|
|
highest = all_codes.max || 0
|
|
UI.message("Highest version code on Google Play: #{highest}")
|
|
File.write('highest_version_code.txt', highest.to_s)
|
|
end
|
|
|
|
private_lane :build_google_release do
|
|
gradle(
|
|
task: "clean bundleGoogleRelease assembleGoogleRelease",
|
|
print_command: false,
|
|
properties: {
|
|
"android.injected.version.name" => ENV['VERSION_NAME'],
|
|
"android.injected.version.code" => ENV['VERSION_CODE']
|
|
}
|
|
)
|
|
lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH]
|
|
end
|
|
end
|