diff --git a/plugins/fastlane-plugin-ios_cd/lib/fastlane/plugin/ios_cd/actions/build_and_deploy_action.rb b/plugins/fastlane-plugin-ios_cd/lib/fastlane/plugin/ios_cd/actions/build_and_deploy_action.rb index 57adbeb..79a39e1 100644 --- a/plugins/fastlane-plugin-ios_cd/lib/fastlane/plugin/ios_cd/actions/build_and_deploy_action.rb +++ b/plugins/fastlane-plugin-ios_cd/lib/fastlane/plugin/ios_cd/actions/build_and_deploy_action.rb @@ -61,15 +61,6 @@ module Fastlane ) UI.message("🍺 API Key formated") - # Install Cocoapods - other_action.cocoapods( - clean_install: true, - clean: true, - integrate: true, - podfile: "./Podfile" - ) - UI.message("🍺 Pod got") - # Set up code signing using match # Configures and runs `match` which manages code signing certificates and provisioning profiles for the project. # The function takes the app's bundle identifier, an authorization token for the project's Git repository, and the name and password for a temporary keychain used to store the signing certificate. @@ -88,19 +79,37 @@ module Fastlane git_url: creds['git_url'].to_s, storage_mode: "git" ) - UI.message("🍺 App signed") + UI.message("🍺 Signing environment ready") + + begin + other_action.flutter_build( + build: 'xcarchive', + build_args: params[:build_args] + ) + rescue => e + UI.message("🍺 Error on building ipa") + end + + archive_path = "../build/ios/archive/Runner.xcarchive" + + if File.exist?(archive_path) + UI.message("🍺 Archive built") + else + raise ArgumentError, "❌ Cannot build XCode archive" + end # Build and export app using Gym - # Builds and packages an iOS app or framework for distribution to the App Store, TestFlight, or Enterprise distribution. + # Packages an iOS app or framework for distribution to the App Store, TestFlight, or Enterprise distribution. other_action.gym( configuration: "Release", workspace: "Runner.xcworkspace", + archive_path: archive_path, + skip_build_archive: true, export_method: "app-store", export_options: { provisioningProfiles: creds['provisioning_profiles'] } ) - UI.message("🍺 App built") # Upload build to App Store Connect using Pilot other_action.pilot( @@ -146,7 +155,13 @@ module Fastlane FastlaneCore::ConfigItem.new(key: :beta_type, env_name: "IOS_CD_TEST_TYPE", optional: false, - description: "Type of test (internal, external, production)") + description: "Type of test (internal, external, production)"), + FastlaneCore::ConfigItem.new( + key: :build_args, + description: 'An array of extra arguments for "flutter build"', + optional: true, + type: Array + ) ] end