Skip to content

Instantly share code, notes, and snippets.

@Skeptick
Created May 25, 2025 12:56
Show Gist options
  • Save Skeptick/34f1091c2ec41508114ce0f4210853b8 to your computer and use it in GitHub Desktop.
Save Skeptick/34f1091c2ec41508114ce0f4210853b8 to your computer and use it in GitHub Desktop.
platform :ios do
xcworkspace_path = "./iosApp/MyApp.xcworkspace"
xcodeproj_path = "./iosApp/MyApp.xcodeproj"
podfile_path = "./iosApp/Podfile"
desc "Загрузка в TestFlight с Prod-средой"
lane :deploy_app_production do
deploy_configurable(
build_scheme: "MyApp_Prod",
environment: "Production",
googleServicesPlist: "GoogleService-Info-MyApp-Prod.plist",
appMetricaPostApiKey: "my-metrica-key"
)
end
desc "Загрузка в TestFlight с Dev-средой"
lane :deploy_app_develop do
deploy_configurable(
build_scheme: "MyApp_Dev",
environment: "Develop",
googleServicesPlist: "GoogleService-Info-MyApp-Dev.plist",
appMetricaPostApiKey: "my-metrica-key"
)
end
lane :deploy_configurable do |options|
build_scheme = options[:build_scheme]
environment = options[:environment]
googleServicesPlist = options[:googleServicesPlist]
appMetricaPostApiKey = options[:appMetricaPostApiKey]
changelog = "Среда: #{environment}"
if ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"].nil?
UI.user_error! "Необходимо указать переменную окружения FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"
end
clear_derived_data()
gradle(task: ":mppLibrary:umbrella:clean")
gradle(task: ":mppLibrary:umbrella:generateDummyFramework")
cocoapods(
repo_update: true,
use_bundle_exec: false,
podfile: podfile_path
)
increment_build_number(
build_number: latest_testflight_build_number + 1,
xcodeproj: xcodeproj_path
)
build_app(
workspace: xcworkspace_path,
scheme: build_scheme,
export_method: "app-store",
buildlog_path: "./ios_build_log",
include_bitcode: false,
export_options: {
uploadBitcode: false,
uploadSymbols: true,
compileBitcode: false,
provisioningProfiles: {
"ru.myapp.package" => "MyApp AppStore",
"ru.myapp.package.dev" => "MyApp Dev AppStore"
}
},
skip_package_dependencies_resolution: true
)
pilot(
skip_submission: false,
skip_waiting_for_build_processing: true,
wait_processing_interval: 30,
wait_processing_timeout_duration: 1800,
localized_build_info: {
"default": {
whats_new: changelog,
}
}
)
upload_symbols_to_crashlytics(
dsym_paths: ["./mppLibrary/umbrella/build/cocoapods/framework/MyAppSDK.framework.dSYM"], # dSYM приложения добавится сам
gsp_path: "./iosApp/MyApp/#{googleServicesPlist}",
binary_path: "./iosApp/Pods/FirebaseCrashlytics/upload-symbols"
)
upload_symbols_to_appmetrica(
files: ["./mppLibrary/umbrella/build/cocoapods/framework/MyAppSDK.framework.dSYM"], # dSYM приложения добавится сам
post_api_key: appMetricaPostApiKey,
binary_path: "./iosApp/Pods/AppMetricaCrashes/AppMetricaCrashes/helper",
)
clean_build_artifacts
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment