forked from eatvio/eatvio_app
Compare commits
2 Commits
main
...
feat/sbp-q
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc28062bb5 | ||
|
|
27b8128a19 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -16,6 +16,8 @@
|
||||
*.mocks.dart
|
||||
android/build/
|
||||
ios/XCBuildData/
|
||||
docs/
|
||||
specs/
|
||||
env/.env
|
||||
.env
|
||||
android/key.properties
|
||||
@@ -25,4 +27,4 @@ backend/
|
||||
.fvm/
|
||||
.fvmrc
|
||||
/eatvio
|
||||
*.code-workspace
|
||||
*.code-workspace
|
||||
|
||||
@@ -82,6 +82,41 @@ platform :ios do
|
||||
|
||||
UI.message "Flutter version from pubspec: #{flutter_build_name} (#{flutter_build_number})"
|
||||
|
||||
# Apple closes a version train once that version is approved/released.
|
||||
# Uploading into a closed train wastes a full ~8 min build and fails only
|
||||
# at the upload step with altool 90186 ("closed for new build submissions")
|
||||
# / 90062 ("must be higher than the previously approved version").
|
||||
# Fail fast here, before building.
|
||||
closed_train_states = [
|
||||
Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::READY_FOR_DISTRIBUTION,
|
||||
Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PROCESSING_FOR_DISTRIBUTION,
|
||||
Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PENDING_DEVELOPER_RELEASE,
|
||||
Spaceship::ConnectAPI::AppStoreVersion::AppVersionState::PENDING_APPLE_RELEASE
|
||||
].join(",")
|
||||
asc_app = Spaceship::ConnectAPI::App.find("com.eatvioapp.app")
|
||||
closed_train = nil
|
||||
if asc_app.nil?
|
||||
UI.important("App com.eatvioapp.app not found in App Store Connect, skipping closed-train guard")
|
||||
else
|
||||
closed_train = asc_app.get_app_store_versions(
|
||||
filter: {
|
||||
appVersionState: closed_train_states,
|
||||
platform: Spaceship::ConnectAPI::Platform::IOS
|
||||
}
|
||||
).find do |v|
|
||||
(Gem::Version.new(v.version_string) >= Gem::Version.new(flutter_build_name))
|
||||
rescue ArgumentError
|
||||
false
|
||||
end
|
||||
end
|
||||
if closed_train
|
||||
UI.user_error!(
|
||||
"Version train #{closed_train.version_string} is closed for new submissions " \
|
||||
"(#{closed_train.app_version_state}), pubspec version is #{flutter_build_name}. " \
|
||||
"Bump the version in pubspec.yaml above #{closed_train.version_string} and re-run."
|
||||
)
|
||||
end
|
||||
|
||||
asc_latest_build_number = latest_testflight_build_number(
|
||||
app_identifier: "com.eatvioapp.app",
|
||||
version: flutter_build_name,
|
||||
@@ -126,9 +161,23 @@ platform :ios do
|
||||
verbose: true
|
||||
)
|
||||
rescue => ex
|
||||
UI.error "Upload to TestFlight failed: #{ex.message}"
|
||||
UI.error "Full error: #{ex.backtrace.join("\n")}"
|
||||
raise ex
|
||||
# Xcode 26 altool prints a harmless "ERROR: ... CDUploaderStateInfoResumeFilePath"
|
||||
# line even when the package was delivered fine (UPLOAD SUCCEEDED appears in the
|
||||
# same output). fastlane < 2.240.0 treats every ERROR line as a failure
|
||||
# (fastlane#30130), so the lane would die after a successful upload.
|
||||
# Real Apple rejections (90186 closed train, 90062 version too low, ...) always
|
||||
# contain UPLOAD FAILED and/or iris-code - those must still fail the lane.
|
||||
if ex.message.include?("CDUploaderStateInfoResumeFilePath") &&
|
||||
!ex.message.include?("UPLOAD FAILED") &&
|
||||
!ex.message.include?("iris-code")
|
||||
UI.important("altool delivered the package but reported a bogus resume-file ERROR " \
|
||||
"(fastlane#30130). Treating upload as successful - " \
|
||||
"verify the build appears in TestFlight.")
|
||||
else
|
||||
UI.error "Upload to TestFlight failed: #{ex.message}"
|
||||
UI.error "Full error: #{ex.backtrace.join("\n")}"
|
||||
raise ex
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: eatvio_app
|
||||
description: A new Flutter project.
|
||||
version: 1.3.69+158
|
||||
publish_to: 'none'
|
||||
version: 1.3.71+160
|
||||
publish_to: "none"
|
||||
|
||||
environment:
|
||||
sdk: ^3.10.4
|
||||
|
||||
Reference in New Issue
Block a user