ENV["MATCH_GIT_URL"] = "ssh://git@gitlab.akamu.de:26/vorstand/ios-match-certificate.git" ENV["FASTLANE_OUTPUT_DIRECTORY"] = "fastlane/output" @output_directory = ENV["FASTLANE_OUTPUT_DIRECTORY"] # git url of match @match_git_url = ENV["MATCH_GIT_URL"] REQUIRED_XCODE_VERSION = "11.3" default_platform(:ios) platform :ios do def badge_version_string(version_number, build_number, color) "#{version_number}-#{build_number}-#{color}" end def build_and_upload_beta() gym( scheme: "Akamu-QA-PROD", clean: true, output_directory: @output_directory, #xcargs: "FIREBASE_PLIST=#{firebase_plist}", silent: true, configuration: "Release (QA)", export_options: { signingStyle: "manual", # or manual , automatic provisioningProfiles: { "de.akamu.tudarmstadt.gameclientakamu" => "match AppStore de.akamu.tudarmstadt.gameclientakamu" } }, sdk: "iphoneos" ) # internal test flight upload pilot( username: "dev@akamu.de", ipa: "#{@output_directory}/Akamu_iOS.ipa", skip_waiting_for_build_processing: true, # reduces CI time but is not possible to use with distribute external distribute_external: false, ) end def upload_debug_symbols(version_number, build_number) download_dsyms( username: "dev@akamu.de", app_identifier: "de.akamu.tudarmstadt.gameclientakamu", build_number: build_number, version: version_number, wait_for_dsym_processing: true, wait_timeout: 360 ) upload_symbols_to_crashlytics( binary_path: "./fbScripts/upload-symbols", dsym_path: "./de.akamu.tudarmstadt.gameclientakamu-#{version_number}-#{build_number}.dSYM.zip" ) end private_lane :verify_xcode_version do ensure_xcode_version(version: REQUIRED_XCODE_VERSION) end lane :lint do sh("mv ../Mintfile ./Mintfile") sh("mint bootstrap") sh("mv ./Mintfile ../Mintfile") SWIFTLINT_PATH = sh("mint which swiftlint -m ../Mintfile | tr -d '\n'") swiftlint( executable: "#{SWIFTLINT_PATH}", reporter: "html", output_file: "fastlane/swiftlint.html" ) end lane :test do scan( scheme: 'Akamu-QA-PROD', # Project scheme name clean: true, # Clean project folder before test execution device: 'iPhone 8', # Simulator for testing reset_simulator: true, configuration: "Debug (Development)" ) end lane :beta do |options| match(git_url: @match_git_url, type: "appstore", app_identifier: "de.akamu.tudarmstadt.gameclientakamu", readonly: true) version_number = options[:version_number] || get_version_number(target: "Akamu_iOS") bump_version_number = !!options[:version_number] if bump_version_number version_number = increment_version_number(version_number: version_number) end # increase build number everytime when packaging a new build build_number = increment_build_number(build_number: latest_testflight_build_number(version: version_number, username: "dev@akamu.de", app_identifier: "de.akamu.tudarmstadt.gameclientakamu") + 1) version_string = badge_version_string(version_number, build_number, "blue") puts "VERSION: #{version_string}" add_badge(shield: version_string, dark: true) build_and_upload_beta end lane :upload_debug_symbols do |options| version_number = options[:version_number] build_number = "#{latest_testflight_build_number( version: version_number, username: "dev@akamu.de", app_identifier: "de.akamu.tudarmstadt.gameclientakamu")}" upload_debug_symbols(version_number, build_number) end end