tangem-app-android-audited/fastlane/Fastfile
2025-01-15 12:10:08 +02:00

147 lines
5.2 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
before_all do |lane, options|
FileUtils.cp("../app/src/main/assets/tangem-app-config/android/google-services.json", "../app")
end
desc "Run detekt"
lane :detekt do
FileUtils.cp("../ci_resources/tests_8gb_ram_ci_gradle.properties", "../gradle.properties")
puts File.read("../gradle.properties")
gradle(task: "detekt")
end
desc "Run tests"
lane :test do
FileUtils.cp("../ci_resources/tests_8gb_ram_ci_gradle.properties", "../gradle.properties")
puts File.read("../gradle.properties")
gradle(task: "testDebugUnitTest")
end
desc "Build a signed release APK"
lane :release do |options| # TODO: remove after fully moving from old CI
gradle(
task: "clean assemble",
build_type: "Release",
properties: {
"android.injected.signing.store.file" => options[:keystore],
"android.injected.signing.store.password" => options[:store_password],
"android.injected.signing.key.alias" => options[:key_alias],
"android.injected.signing.key.password" => options[:key_password],
})
end
desc "Build external and release APKs"
lane :build do |options| # TODO: remove after fully moving from old CI
gradle(task: 'clean')
gradle(
task: "bundle",
build_type: "Release",
properties: {
'versionCode' => options[:versionCode],
'versionName' => options[:versionName],
"android.injected.signing.store.file" => options[:keystore],
"android.injected.signing.store.password" => options[:store_password],
"android.injected.signing.key.alias" => options[:key_alias],
"android.injected.signing.key.password" => options[:key_password],
}
)
gradle(
task: "assemble",
build_type: "Release",
properties: {
'versionCode' => options[:versionCode],
'versionName' => options[:versionName],
"android.injected.signing.store.file" => options[:keystore],
"android.injected.signing.store.password" => options[:store_password],
"android.injected.signing.key.alias" => options[:key_alias],
"android.injected.signing.key.password" => options[:key_password],
}
)
end
desc "Build release AAB and APKs"
lane :buildRelease do |options|
FileUtils.cp("../ci_resources/build_ci_gradle.properties", "../gradle.properties")
puts File.read("../gradle.properties")
gradle(
task: "bundle",
build_type: "Release",
properties: {
'versionCode' => options[:versionCode],
'versionName' => options[:versionName],
"android.injected.signing.store.file" => options[:keystore],
"android.injected.signing.store.password" => options[:store_password],
"android.injected.signing.key.alias" => options[:key_alias],
"android.injected.signing.key.password" => options[:key_password],
}
)
gradle(
task: "assemble",
build_type: "Release",
properties: {
'versionCode' => options[:versionCode],
'versionName' => options[:versionName],
"android.injected.signing.store.file" => options[:keystore],
"android.injected.signing.store.password" => options[:store_password],
"android.injected.signing.key.alias" => options[:key_alias],
"android.injected.signing.key.password" => options[:key_password],
}
)
end
desc "Submit a new Beta Build to Firebase App Distribution"
lane :beta do |options|
firebase_app_distribution(
app: options[:app_id],
apk_path: options[:apk_path],
groups: options[:groups])
end
desc "Publish internal and external builds to Firebase App Distribution"
lane :publishToFirebase do |options|
FileUtils.cp("../ci_resources/build_ci_gradle.properties", "../gradle.properties")
puts File.read("../gradle.properties")
gradle(
task: "clean assemble",
build_type: "Internal",
properties: {
'versionCode' => ENV['version_code'],
'versionName' => ENV['version_name'],
}
)
uploaded_release = firebase_app_distribution(
firebase_cli_token: ENV['firebase_cli_token'],
app: ENV['app_id_internal'],
apk_path: ENV['apk_path_internal'],
groups: ENV['groups'],
release_notes: ENV['release_notes'],
)
release_url = uploaded_release[:testingUri]
# Applying base64 encoding twice to prevent GA bug "Skip output 'output' since it may contain secret."
# See https://github.com/orgs/community/discussions/13082#discussioncomment-6776428 for details
encoded_release_url = Base64.strict_encode64(Base64.strict_encode64(release_url))
sh("echo 'encoded_release_url=#{encoded_release_url}' >> /workspace/github_output.txt")
end
end