diff --git a/packages/app/fastlane/Fastfile b/packages/app/fastlane/Fastfile index 53256cf55..acc757672 100644 --- a/packages/app/fastlane/Fastfile +++ b/packages/app/fastlane/Fastfile @@ -16,11 +16,34 @@ platform :ios do app_identifier: APP_IDENTIFIER, ) - wait_for_build_processing_to_be_complete( - api_key: api_key, - app_identifier: APP_IDENTIFIER, - build_number: build_number.to_s, + require "spaceship" + Spaceship::ConnectAPI.token = Spaceship::ConnectAPI::Token.create( + key_id: ENV.fetch("ASC_KEY_ID"), + issuer_id: ENV.fetch("ASC_ISSUER_ID"), + filepath: ENV.fetch("ASC_KEY_P8"), ) + app = Spaceship::ConnectAPI::App.find(APP_IDENTIFIER) + UI.user_error!("Could not find app #{APP_IDENTIFIER} on App Store Connect") if app.nil? + + deadline = Time.now + (30 * 60) + loop do + builds = Spaceship::ConnectAPI::Build.all( + app_id: app.id, + filter: { "version" => build_number.to_s }, + includes: "preReleaseVersion", + ) + build = builds.find { |b| b.pre_release_version&.platform == "IOS" } + state = build&.processing_state + UI.message("Build #{build_number} processing state: #{state || 'unknown'}") + break if state == "VALID" + if state == "INVALID" || state == "FAILED" + UI.user_error!("Build #{build_number} failed App Store processing (state: #{state}).") + end + if Time.now > deadline + UI.user_error!("Timed out waiting for build #{build_number} to finish processing on App Store Connect.") + end + sleep(30) + end deliver( api_key: api_key,