Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pilot] The resource 'betaAppReviewSubmissions' does not allow 'DELETE' #18408

Closed
4 tasks done
viewDidAppear opened this issue Mar 17, 2021 · 45 comments · Fixed by #21995
Closed
4 tasks done

[pilot] The resource 'betaAppReviewSubmissions' does not allow 'DELETE' #18408

viewDidAppear opened this issue Mar 17, 2021 · 45 comments · Fixed by #21995
Assignees

Comments

@viewDidAppear
Copy link

New Issue Checklist

Issue Description

While submitting a binary to App Store Connect, running our deploy lane, an error occurs:

The resource 'betaAppReviewSubmissions' does not allow 'DELETE'

Which causes everything to halt.

Command executed
While "moving" an existing item in Beta Testing to Submission "DELETE" command fails.
[⠋] 🚀 [⠙] 🚀 [⠹] 🚀 [⠸] 🚀 [⠼] 🚀 [⠴] 🚀 [⠦] 🚀 [⠧] 🚀 [⠇] 🚀 [⠏] 🚀 [⠋] 🚀 [⠙] 🚀 [⠹] 🚀 [⠸] 🚀 [⠼] 🚀 [✔] 🚀 
[01:15:03]: Loading from './fastlane/.env.release'
+-------------------------------------------+---------+---------------------------------+
|                                     Used plugins                                      |
+-------------------------------------------+---------+---------------------------------+
| Plugin                                    | Version | Action                          |
+-------------------------------------------+---------+---------------------------------+
| fastlane-plugin-unzip                     | 1.0.1   | unzip                           |
| fastlane-plugin-redacted-compa            | 0.1.0   | get_github_pr_numbers           |
|                                           |         | get_version_number              |
|                                           |         | create_github_milestone         |
|                                           |         | verify_jira_ticket_status       |
|                                           |         | jira_tickets_from_git           |
|                                           |         |                                 |
| fastlane-plugin-firebase_app_distribution | 0.2.4   | firebase_app_distribution_login |
|                                           |         | firebase_app_distribution       |
| fastlane-plugin-ios_dependency_parser     | 1.0.0   | ios_dependency_parser           |
+-------------------------------------------+---------+---------------------------------+

[01:15:05]: Sending anonymous analytics information
[01:15:05]: Learn more at https://docs.fastlane.tools/#metrics
[01:15:05]: No personal or sensitive data is sent.
[01:15:05]: You can disable this by adding `opt_out_usage` at the top of your Fastfile
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:05]: ----------------------------------------
[01:15:05]: --- Step: Verifying fastlane version ---
[01:15:05]: ----------------------------------------
[01:15:05]: Your fastlane version 2.177.0 matches the minimum requirement of 1.105.2  ✅
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:05]: ------------------------------
[01:15:05]: --- Step: default_platform ---
[01:15:05]: ------------------------------
[01:15:05]: Driving the lane 'ios deploy' 🚀
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:05]: -------------------
[01:15:05]: --- Step: is_ci ---
[01:15:05]: -------------------
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:05]: ---------------------------------------
[01:15:05]: --- Step: app_store_connect_api_key ---
[01:15:05]: ---------------------------------------
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:06]: ----------------------
[01:15:06]: --- Step: download ---
[01:15:06]: ----------------------
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:07]: -----------------------------
[01:15:07]: --- Step: setup_circle_ci ---
[01:15:07]: -----------------------------
[01:15:07]: Skipping Log Path setup as FL_OUTPUT_DIR is unset
[01:15:07]: Creating temporary keychain: "fastlane_tmp_keychain".
[01:15:07]: $ security list-keychains -d user
[01:15:07]: ▸ "/Users/distiller/Library/Keychains/fastlane_tmp_keychain-db"
[01:15:07]: Found keychain '/Users/distiller/Library/Keychains/fastlane_tmp_keychain-db' in list-keychains, adding to search list skipped
[01:15:07]: Enabling match readonly mode.
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:07]: --------------------------------------------------
[01:15:07]: --- Step: Switch to ios sync_certificates lane ---
[01:15:07]: --------------------------------------------------
[01:15:07]: Cruising over to lane 'ios sync_certificates' 🚖
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:07]: -------------------
[01:15:07]: --- Step: match ---
[01:15:07]: -------------------

+--------------------------------+-------------------------------------------------------------------------------------------+
|                                                 Summary for match 2.177.0                                                  |
+--------------------------------+-------------------------------------------------------------------------------------------+
| app_identifier                 | ["com.companyname.projectarino", "com.companyname.notificationserviceextension"]          |
| api_key                        | ********                                                                                  |
| type                           | appstore                                                                                  |
| readonly                       | true                                                                                      |
| generate_apple_certs           | true                                                                                      |
| skip_provisioning_profiles     | false                                                                                     |
| username                       | ***********************                                                                   |
| storage_mode                   | git                                                                                       |
| git_url                        | [email protected]:secret/git/repo/url                                                        |
| git_branch                     | master                                                                                    |
| shallow_clone                  | false                                                                                     |
| clone_branch_directly          | false                                                                                     |
| keychain_name                  | fastlane_tmp_keychain                                                                     |
| force                          | false                                                                                     |
| force_for_new_devices          | false                                                                                     |
| skip_confirmation              | false                                                                                     |
| skip_docs                      | false                                                                                     |
| platform                       | ios                                                                                       |
| derive_catalyst_app_identifier | false                                                                                     |
| fail_on_name_taken             | false                                                                                     |
| skip_certificate_matching      | false                                                                                     |
| skip_set_partition_list        | false                                                                                     |
| verbose                        | false                                                                                     |
+--------------------------------+-------------------------------------------------------------------------------------------+

[01:15:07]: Cloning remote git repo...
[01:15:07]: If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.
[01:15:09]: Checking out branch master...
[01:15:09]: 🔓  Successfully decrypted certificates repo
[01:15:09]: Installing certificate...
[01:15:10]: There are no local code signing identities found.
You can run `security find-identity -v -p codesigning fastlane_tmp_keychain` to get this output.
This Stack Overflow thread has more information: https://stackoverflow.com/q/35390072/774.
(Check in Keychain Access for an expired WWDR certificate: https://stackoverflow.com/a/35409835/774 has more info.)
[01:15:10]: Setting key partition list... (this can take a minute if there are a lot of keys installed)
[01:15:10]: security: SecItemCopyMatching: The specified item could not be found in the keychain.
[01:15:10]: Setting key partition list... (this can take a minute if there are a lot of keys installed)

<PROVISIONING PROFILES>
[01:15:10]: All required keys, certificates and provisioning profiles are installed 🙌
[01:15:10]: Setting Provisioning Profile type to 'app-store'
[01:15:10]: Cruising back to lane 'ios deploy' 🚘
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
[01:15:10]: -----------------
[01:15:10]: --- Step: gym ---
[01:15:10]: -----------------
[01:15:11]: Resolving Swift Package Manager dependencies...
<REDACTED GYM OUTPUT>
[01:15:55]: $ set -o pipefail && xcodebuild -workspace ./Project.xcworkspace -scheme SCHEME -configuration Release -destination 'generic/platform=iOS' -archivePath /Users/distiller/Library/Developer/Xcode/Archives/2021-03-17/<REDACTED>\ 2021-03-17\ 01.15.55.xcarchive archive | tee /Users/distiller/Library/Logs/gym/REDACTED.log | xcpretty
<COMPILING SOURCE>
[01:36:54]: ▸ Linking <REDACTED>
<COMPILING XIB>
[01:39:02]: ▸ Processing Info.plist
[01:39:02]: ▸ Copying /Users/distiller/Library/Developer/Xcode/DerivedData/dfbufodpnqqnnwfesbguxqdynefb/Build/Intermediates.noindex/ArchiveIntermediates/App/BuildProductsPath/Release-iphoneos/NotificationServiceExtension.appex
[01:39:02]: ▸     skipping copy phase strip, binary is code signed: /Users/distiller/Library/Developer/Xcode/DerivedData/dfbufodpnqqnnwfesbguxqdynefb/Build/Intermediates.noindex/ArchiveIntermediates/App/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/NotificationServiceExtension.appex/NotificationServiceExtension
[01:39:02]: ▸ Generating 'App.app.dSYM'
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/googlemac_iPhone_iOSGuard_iosguard_no_breakpad-34VQINNO1FFNQ.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/googlemac_iPhone_recaptcha_recaptcha_error-2FAJP848PPJ5M.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/googlemac_iPhone_recaptcha_twofactor_objc_proto-3DU2DBDTLP9YI.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/FBLPromises-3HC5GVPSKGZUV.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/googlemac_iPhone_recaptcha_recaptcha_action_type-YVJER5KSKNA0.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/googlemac_iPhone_recaptcha_mobile_client_objc_proto-2JVL16YUET3CC.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/third_party_objective_c_gtm_session_fetcher_GTMSessionFetcher_Core-1LH56LXRRJ90J.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/Foundation-OIF36D0ZWUYU.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/Dispatch-2MAX3VAF9W7SL.pcm: No such file or directory
[01:39:11]: ▸     /var/netboot/workspace/a68a29d8cae284340117191cc0abc9da81a5_550541_24179/tmp/swift_module_cache.uxUxVS/38F4VT292GLJO/UIKit-3STJALP8S84YZ.pcm: No such file or directory
<REDACTED>
[01:39:38]: ▸ Touching <REDACTED>.app
[01:39:40]: ▸ Archive Succeeded
[01:39:40]: Generated plist file with the following values:
<REDACTED>
[01:39:40]: $ /usr/bin/xcrun /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh -exportArchive -exportOptionsPlist '/var/folders/6y/gy9gggt14379c_k39vwb50lc0000gn/T/gym_config20210317-700-v120nd.plist' -archivePath /Users/distiller/Library/Developer/Xcode/Archives/2021-03-17/<REDACTED>\ 2021-03-17\ 01.15.55.xcarchive -exportPath '/var/folders/6y/gy9gggt14379c_k39vwb50lc0000gn/T/gym_output20210317-700-1awv5qm' 
[01:40:46]: Mapping dSYM(s) using generated BCSymbolMaps
<REDACTED>
[01:41:02]: Compressing 9 dSYM(s)
<REDACTED>
[01:41:10]: Successfully exported and compressed dSYM file
[01:41:10]: Successfully exported and signed the ipa file:
[01:41:10]: /Users/distiller/project/APP.ipa
[01:41:10]: ----------------------------------------------------
[01:41:10]: --- Step: Switch to ios create_release_note lane ---
[01:41:10]: ----------------------------------------------------
[01:41:10]: Cruising over to lane 'ios create_release_note' 🚖
[01:41:11]: ------------------------
[01:41:11]: --- Step: git_branch ---
[01:41:11]: ------------------------
[01:41:11]: ----------------------------------------
[01:41:11]: --- Step: changelog_from_git_commits ---
[01:41:11]: ----------------------------------------
[01:41:11]: Collecting the last few Git commits...
[01:41:11]: Cruising back to lane 'ios deploy' 🚘
[01:41:11]: -------------------
[01:41:11]: --- Step: pilot ---
[01:41:11]: -------------------
[01:41:11]: Creating authorization token for App Store Connect API
[01:41:17]: Ready to upload new build to TestFlight....
[01:41:21]: Going to upload updated app to App Store Connect
[01:41:21]: This might take a few minutes. Please don't interrupt the script.
[01:43:06]: iTunes Transporter successfully finished its job
[01:43:06]: --------------------------------------------------------------------
[01:43:06]: Successfully uploaded package to App Store Connect. It might take a few minutes until it's visible online.
[01:43:06]: --------------------------------------------------------------------
[01:43:06]: Successfully uploaded the new binary to App Store Connect
[01:43:06]: If you want to skip waiting for the processing to be finished, use the `skip_waiting_for_build_processing` option
[01:43:06]: Note that if `skip_waiting_for_build_processing` is used but a `changelog` is supplied, this process will wait for the build to appear on AppStoreConnect, update the changelog and then skip the remaining of the processing steps.
[01:43:06]: Waiting for processing on... <REDACTED VERSION INFO>
[01:43:06]: Read more information on why this build isn't showing up yet - https://github.com/fastlane/fastlane/issues/14997
[01:43:06]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:43:37]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:44:08]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:44:38]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:45:09]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:45:39]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:46:10]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:46:40]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:47:11]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:47:41]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:48:12]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:48:43]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:49:13]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:49:44]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:50:14]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:50:45]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:51:16]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:51:46]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:52:16]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:52:47]: Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)
[01:53:17]: Waiting for App Store Connect to finish processing the new build 
[01:53:49]: Waiting for App Store Connect to finish processing the new build 
[01:54:20]: Waiting for App Store Connect to finish processing the new build 
[01:54:51]: Waiting for App Store Connect to finish processing the new build 
[01:55:22]: Waiting for App Store Connect to finish processing the new build 
[01:55:53]: Waiting for App Store Connect to finish processing the new build 
[01:56:24]: Waiting for App Store Connect to finish processing the new build 
[01:56:54]: Waiting for App Store Connect to finish processing the new build 
[01:57:25]: Waiting for App Store Connect to finish processing the new build 
[01:57:57]: Waiting for App Store Connect to finish processing the new build
[01:58:28]: Waiting for App Store Connect to finish processing the new build 
[01:58:58]: Waiting for App Store Connect to finish processing the new build 
[01:59:29]: Waiting for App Store Connect to finish processing the new build 
[02:00:00]: Waiting for App Store Connect to finish processing the new build 
[02:00:31]: Waiting for App Store Connect to finish processing the new build 
[02:01:03]: Waiting for App Store Connect to finish processing the new build 
[02:01:33]: Waiting for App Store Connect to finish processing the new build 
[02:02:04]: Waiting for App Store Connect to finish processing the new build 
[02:02:36]: Waiting for App Store Connect to finish processing the new build 
[02:03:06]: Waiting for App Store Connect to finish processing the new build 
[02:03:37]: Waiting for App Store Connect to finish processing the new build 
[02:04:09]: Waiting for App Store Connect to finish processing the new build 
[02:04:40]: Waiting for App Store Connect to finish processing the new build 
[02:05:11]: Waiting for App Store Connect to finish processing the new build 
[02:05:42]: Waiting for App Store Connect to finish processing the new build 
[02:06:13]: Waiting for App Store Connect to finish processing the new build 
[02:06:45]: Waiting for App Store Connect to finish processing the new build 
[02:07:16]: Waiting for App Store Connect to finish processing the new build 
[02:07:47]: Waiting for App Store Connect to finish processing the new build 
[02:08:18]: Waiting for App Store Connect to finish processing the new build 
[02:08:49]: Waiting for App Store Connect to finish processing the new build 
[02:09:20]: Waiting for App Store Connect to finish processing the new build 
[02:09:51]: Waiting for App Store Connect to finish processing the new build 
[02:10:22]: Waiting for App Store Connect to finish processing the new build 
[02:10:54]: Waiting for App Store Connect to finish processing the new build 
[02:11:25]: Waiting for App Store Connect to finish processing the new build 
[02:11:56]: Waiting for App Store Connect to finish processing the new build 
[02:12:27]: Waiting for App Store Connect to finish processing the new build 
[02:12:58]: Waiting for App Store Connect to finish processing the new build 
[02:13:29]: Waiting for App Store Connect to finish processing the new build 
[02:14:00]: Waiting for App Store Connect to finish processing the new build 
[02:14:31]: Waiting for App Store Connect to finish processing the new build 
[02:15:02]: Waiting for App Store Connect to finish processing the new build 
[02:15:33]: Waiting for App Store Connect to finish processing the new build 
[02:16:04]: Waiting for App Store Connect to finish processing the new build 
[02:16:35]: Waiting for App Store Connect to finish processing the new build 
[02:17:06]: Waiting for App Store Connect to finish processing the new build 
[02:17:37]: Waiting for App Store Connect to finish processing the new build 
[02:18:08]: Waiting for App Store Connect to finish processing the new build 
[02:18:39]: Waiting for App Store Connect to finish processing the new build 
[02:19:10]: Successfully finished processing the build
[02:19:11]: Successfully set the changelog for build
[02:19:13]: Another build is already in review. Going to remove that build and submit the new one.
[02:19:13]: Deleting beta app review submission for build: WXYZ
[02:19:27]: Error raised while executing lane: deploy, exception: The given operation is not allowed - The resource 'betaAppReviewSubmissions' does not allow 'DELETE'. Allowed operations are: GET_COLLECTION, GET_INSTANCE, CREATE
[02:19:27]: -------------------
[02:19:27]: --- Step: is_ci ---
[02:19:27]: -------------------
[02:19:27]: ------------------------
[02:19:27]: --- Step: git_branch ---
[02:19:27]: ------------------------
[02:19:27]: -------------------
[02:19:27]: --- Step: slack ---
[02:19:27]: -------------------
[02:19:27]: Successfully sent Slack notification

Looking for related GitHub issues on fastlane/fastlane...

➡️  Running xcrun extractLocStrings as part of Fastlane causes crash for duplicated high-codepoint unicode localisable strings
    https://github.com/fastlane/fastlane/issues/15153 [open] 42 💬
    a day ago

➡️  failed on flutter project
    https://github.com/fastlane/fastlane/issues/16085 [closed] 2 💬
    07 Jun 2020

➡️  Upload to Crashlytics doesn't work cause of invalid byte sequence
    https://github.com/fastlane/fastlane/issues/14176 [closed] 11 💬
    10 Sep 2019

and 41 more at: https://github.com/fastlane/fastlane/search?q=invalid%20byte%20sequence%20in%20UTF-8&type=Issues&utf8=✓

🔗  You can ⌘ + double-click on links to open them directly in your browser.
+---------------------------+--------------+----------------+
|                 Plugin updates available                  |
+---------------------------+--------------+----------------+
| Plugin                    | Your Version | Latest Version |
+---------------------------+--------------+----------------+
| firebase_app_distribution | 0.2.4        | 0.2.5          |
+---------------------------+--------------+----------------+
[02:19:28]: To update all plugins, just run
[02:19:28]: $ bundle exec fastlane update_plugins


#######################################################################
# fastlane 2.178.0 is available. You are on 2.177.0.
# You should use the latest version.
# Please update using `bundle update fastlane`.
#######################################################################

2.178.0 Improvements
* [spaceship] add testers to other group (#18382) via Eric Wu
* [action] create_xcframework - delete .xcframework if already exists (#18345) via Nemanja Filipovic
* [action] github_api action - 'headers' param improvements (#18347) via Manish Rathi
* [action] app_store_connect_api_key - add validation to session duration. (#18346) via Roger Oba
* [action] add skip_info_plist parameter to increment_build_number to avoid updating Info.plist (#18372) via Maarten Billemont
* [fastlane_core] fix package upload after two-step rescue. (#18373) via Maarten Billemont
* [pilot] do not update app beta details if not needed (#18289) via Albert Casademont
* [fastlane_core][pilot][deliver] Improved transporter logging to pilot (#12259) via Alex Delong
* [Ruby 3.0] fix Ruby 2.7's deprecation warnings (#18021) via Satoshi Namai
* [action] github_api - enhance Github Actions token support (#18044) via David Cacenabes

Please update using `bundle update fastlane`
bundler: failed to load command: fastlane (/Users/distiller/project/Bundler/ruby/2.7.0/bin/fastlane)
ArgumentError: [!] invalid byte sequence in UTF-8
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/cell.rb:51:in `split'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/cell.rb:51:in `lines'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/cell.rb:71:in `value_for_column_width_recalc'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:204:in `block (2 levels) in recalc_column_widths'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:203:in `each'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:203:in `block in recalc_column_widths'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:201:in `each'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:201:in `recalc_column_widths'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:339:in `column_widths'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:97:in `column_width'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb:7:in `block in render'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb:6:in `map'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb:6:in `render'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:142:in `block in render'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:142:in `map'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/table.rb:142:in `render'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/lane_manager_base.rb:74:in `puts'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/lane_manager_base.rb:74:in `puts'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/lane_manager_base.rb:74:in `print_lane_context'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/lane_manager.rb:57:in `rescue in cruise_lane'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/lane_manager.rb:46:in `cruise_lane'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/commands_generator.rb:352:in `run'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/fastlane/lib/fastlane/cli_tools_distributor.rb:122:in `take_off'
  /Users/distiller/project/Bundler/ruby/2.7.0/gems/fastlane-2.177.0/bin/fastlane:23:in `<top (required)>'
  /Users/distiller/project/Bundler/ruby/2.7.0/bin/fastlane:23:in `load'
  /Users/distiller/project/Bundler/ruby/2.7.0/bin/fastlane:23:in `<top (required)>'

Exited with code exit status 1

Environment

NB: Private info removed.

🚫 fastlane environment 🚫

Stack

Key Value
OS 10.15.7
Ruby 2.7.2
Bundler? true
Git git version 2.26.2
Installation Source ~/Desktop/WORK/PROJECTS//Bundler/ruby/2.7.0/bin/fastlane
Host Mac OS X 10.15.7 (19H114)
Ruby Lib Dir ~/.rbenv/versions/2.7.2/lib
OpenSSL Version OpenSSL 1.1.1i 8 Dec 2020
Is contained false
Is homebrew false
Is installed via Fabric.app false
Xcode Path /Applications/Xcode_12_1.app/Contents/Developer/
Xcode Version 12.1

System Locale

Error
No Locale with UTF8 found 🚫

fastlane files:

`./fastlane/Fastfile`
default_platform :ios

PROJECT_ROOT  = File.expand_path(File.dirname(__FILE__), '..').freeze
FASTLANE_ROOT = File.join(PROJECT_ROOT, 'fastlane').freeze

platform :ios do
  # Hooks

  before_all do |lane, options|
    next unless is_ci

    app_store_connect_api_key
    update_assets if [:test, :deploy].include?(lane)
    if [:deploy].include?(lane)
      setup_circle_ci
      sync_certificates
    end
  end

  after_all do |lane, options|
    next unless is_ci

    if lane == :test
      run_danger
      sh 'curl -s https://codecov.io/bash | bash'
      if sha1 = ENV['CIRCLE_SHA1']
        github_api(
          http_method: 'POST',
          body: {
            state: 'success',
            target_url: circleci_artifacts_url(path: 'fastlane/test_output/build_products.zip'),
            description: 'Simulator binary is available.',
            context: 'fastlane/artifacts',
          },
          path: "repos/#{ENV['GITHUB_REPOSITORY_NAME']}/statuses/#{sha1}",
        )
      end
    end
  end

  error do |lane, exception, options|
    UI.error("Error raised while executing lane: #{lane}, exception: #{exception}")

    next unless is_ci

    run_danger if lane == :test

    next unless git_branch == 'master' || !ENV['CIRCLE_TAG'].to_s.empty?

    payload = {}
    payload['Job'] = ENV['CIRCLE_BUILD_URL'] if ENV['CIRCLE_BUILD_URL']
    payload['Workflow'] = "https://circleci.com/workflow-run/#{ENV['CIRCLE_WORKFLOW_ID']}" if ENV['CIRCLE_WORKFLOW_ID']
    payload['PR'] = ENV['CIRCLE_PULL_REQUEST'] if ENV['CIRCLE_PULL_REQUEST'] && !ENV['CIRCLE_PULL_REQUEST'].empty?
    payload['Author'] = ENV['CIRCLE_USERNAME'] if ENV['CIRCLE_USERNAME'] && !ENV['CIRCLE_USERNAME'].empty?
    payload['Environment'] = lane_context[SharedValues::ENVIRONMENT] if lane_context[SharedValues::ENVIRONMENT]
    payload['Exception'] = exception
    slack_options = {
      success: false,
      payload: payload,
      default_payloads: [:lane, :git_branch],
    }
    slack_options[:pretext] = ENV['ERROR_NOTIF_PRETEXT'] if ENV['ERROR_NOTIF_PRETEXT']
    slack(slack_options)
  end

  # Lanes

  desc 'Submit the app for review'
  lane :submit do
    version = prompt(
      text: 'Which version?',
      ci_input: ENV['CIRCLE_TAG'],
    )
    build_number = prompt(
      text: 'Which build number?',
      ci_input: get_project_build_number,
    )
    dsym_check_count = 0
    loop do
      build_details = build_details(version: version, build_number: build_number)
      break if build_details.dsym_url

      dsym_check_count += 1
      UI.user_error!("Could not find any dSYM for #{version} (#{build_number})") if dsym_check_count >= 20
      UI.message('Waiting for dSYM file to appear...')
      sleep(30)
    end
    deliver(
      force: is_ci,
      submit_for_review: true,
      app_version: version,
      build_number: build_number,
      skip_binary_upload: true,
      phased_release: true,
      submission_information: {
        add_id_info_uses_idfa: true,
        add_id_info_serves_ads: false,
        add_id_info_tracks_action: true,
        add_id_info_tracks_install: true,
        add_id_info_limits_tracking: true,
      },
      precheck_include_in_app_purchases: false,
    )
  end

  desc 'Release the app'
  lane :release do
    authorize_connect_api(use_legacy: true)
    require 'spaceship'
    version = Spaceship::ConnectAPI::App
              .find(ENV['DELIVER_APP_IDENTIFIER'])
              .get_pending_release_app_store_version

    version_text = "#{version.version_string} (#{version.build.version})"
    next unless is_ci || prompt(text: "Release #{version_text}?", boolean: true)

    version.create_app_store_version_release_request
    slack(
      channel: ENV['DBL_RELEASE_NOTIF_CHANNEL'],
      default_payloads: [],
      pretext: "iOS `#{version_text}` phased release started!",
    )
  end

  desc 'Rollout the app to all users'
  lane :rollout do
    authorize_connect_api(use_legacy: true)
    require 'spaceship'
    version = Spaceship::ConnectAPI::App
              .find(ENV['DELIVER_APP_IDENTIFIER'])
              .get_live_app_store_version

    version_text = "#{version.version_string} (#{version.build.version})"
    next unless is_ci || prompt(text: "Release #{version_text} to all users?", boolean: true)
  end

  desc 'Set GitHub release note'
  lane :set_github_release_note do
    version = prompt(
      text: 'Which version do you want to set GitHub release note?',
      ci_input: ENV['CIRCLE_TAG'],
    )
    build_number = app_store_build_number(
      live: false,
      version: version,
    )
    build_details = build_details(
      version: version,
      build_number: build_number,
    )
    compressed_size = build_details.size_in_bytes

    description = []
    description << "Build number: #{build_number}"
    description << "Workflow: https://circleci.com/workflow-run/#{ENV['CIRCLE_WORKFLOW_ID']}" if ENV['CIRCLE_WORKFLOW_ID']
    if compressed_size.nil?
      UI.error('Failed to fetch compressed ipa size. Skipping.')
    else
      # Follow Apple Store Connect calculation and avoid 1,024
      compressed_size_in_mb = (compressed_size / 1000.0 / 1000.0).round(2)
      description << "Compressed ipa size: #{compressed_size_in_mb}MB"
    end
    description << create_release_note(version: version)

    repo_name = ENV['DBL_GITHUB_REPOSITORY_NAME']
    release = get_github_release(
      url: repo_name,
      version: version,
    )
    if release.nil?
      set_github_release(
        repository_name: repo_name,
        tag_name: version,
        name: '',
        description: description.join("\n"),
      )
      next
    end
    github_api(
      http_method: 'PATCH',
      body: { body: description.join("\n") },
      path: "repos/#{repo_name}/releases/#{release['id']}",
    )
  end

  desc 'Post submission log to BigQuery'
  lane :post_submission_log_to_bigquery do
    version = prompt(
      text: 'Which version do you want to send submission log for?',
      ci_input: ENV['CIRCLE_TAG'],
    )
    build_number = app_store_build_number(
      live: false,
      version: version,
    )
    build_details = build_details(
      version: version,
      build_number: build_number,
    )
    data = [
      {
        binary_size: build_details.size_in_bytes,
        binary_sizes: build_details.sizes_in_bytes.to_json,
        platform: 'ios',
        app_display_version: version,
        app_build_version: build_number,
        uploaded_at: Time.at(build_details.upload_date / 1000),
      },
    ]
    post_to_bigquery(dataset_id: 'mobile', table_id: 'submission_log', data: data)
  end

  desc 'Run tests'
  lane :test do
    scan(
      scheme: 'UnitTests',
      skip_slack: true,
    )
  end

  desc 'Build the app and upload to TestFlight / Firebase'
  lane :deploy do
    export_options = {}
    if ENV['GYM_EXPORT_METHOD'] != 'app-store'
      # Disable re-compile since it takes relatively long
      export_options[:compileBitcode] = false
    end
    gym(export_options: export_options)
    notes = create_release_note(
      version: get_info_plist_value(
        path: File.join(PROJECT_ROOT, 'Double/Double/Info.plist'),
        key: 'CFBundleShortVersionString',
      ),
    )
    case ENV['DBL_IPA_DEPLOYMENT_DESTINATION']
    when 'TestFlight'
      beta_app_review_info = {
        contact_email: ENV['BETA_CONTACT_EMAIL'],
        contact_first_name: ENV['BETA_CONTACT_FIRST_NAME'],
        contact_last_name: ENV['BETA_CONTACT_LAST_NAME'],
        contact_phone: ENV['BETA_CONTACT_PHONE'],
        demo_account_name: ENV['BETA_DEMO_ACCOUNT_NAME'],
        demo_account_password: ENV['BETA_DEMO_ACCOUNT_PASSWORD'],
      }
      pilot(beta_app_review_info: beta_app_review_info, changelog: notes)
    when 'Beta'
      firebase_app_distribution(release_notes: notes)
    else
      UI.user_error!('Unsupported deployment destination')
    end
  end

  desc 'Update build number'
  lane :update_build_number do
    number = prompt(
      text: 'Please enter build number:',
      ci_input: (ENV['CIRCLE_BUILD_NUM'].to_i + 6000).to_s,
    )
    increment_build_number(
      build_number: number,
      xcodeproj: File.join(PROJECT_ROOT, 'Double/Double.xcodeproj'),
    )
  end

  desc 'Update version number'
  lane :update_version_number do
    version = prompt(
      text: 'Please enter version number:',
      ci_input: ENV['CIRCLE_TAG'] || get_dbl_version_number,
    )
    (['APP'] + ENV['APP_EXTENSION_NAMES'].split(',')).each do |target_name|
      update_plist(
        plist_path: File.join(PROJECT_ROOT, "Double/#{target_name.strip}/Info.plist"),
        block: lambda { |plist|
          plist['CFBundleShortVersionString'] = version
        },
      )
    end
  end

  desc 'Download dsyms from App Store Connect and upload to Crashlytics'
  lane :sync_dsyms do
    authorize_connect_api(use_legacy: true)
    require 'spaceship'
    min_version = Spaceship::ConnectAPI
                  .get_app_store_versions(
                    app_id: Spaceship::ConnectAPI::App.find(ENV['DOWNLOAD_DSYMS_APP_IDENTIFIER']).id,
                    limit: 2,
                  )
                  .to_models
                  .min_by { |v| Gem::Version.new(v.version_string) }

    download_dsyms(min_version: min_version.version_string)
    upload_symbols_to_crashlytics(
      gsp_path: File.join(PROJECT_ROOT, 'Double/Double/Supporting Files/Firebase/GoogleService-Info.plist'),
      dsym_worker_threads: `sysctl -n hw.ncpu`.to_i,
    )
  end

  desc 'Sync certificates or renew as needed'
  lane :sync_certificates do
    base_identifier = ENV['APP_IDENTIFIER']
    app_identifier = [base_identifier] + ENV['APP_EXTENSION_NAMES'].split(',').map do |name|
      base_identifier + ".#{name.strip.downcase}"
    end
    match(app_identifier: app_identifier)
  end

  desc 'Post outdated dependencies on Slack'
  lane :post_outdated_dependencies do
    parse_pod_dependencies
    pods = lane_context[SharedValues::POD_ANALYZER_RESULTS]
    texts = pods.map { |p| "`#{p.pod_name}`, current: `#{p.current_version}`, latest: `#{p.latest}`" }
    slack(
      channel: ENV['OUTDATED_NOTIF_CHANNEL'],
      success: false,
      pretext: "Outdated dependencies: `#{texts.count}`",
      message: texts.join("\n"),
      default_payloads: [],
    )
  end

  # Private

  <REDACTED INTERNAL PRIVATE LANES>

  private_lane :authorize_connect_api do |params|
    require 'spaceship'
    if lane_context[SharedValues::APP_STORE_CONNECT_API_KEY] && !params[:use_legacy]
      Spaceship::ConnectAPI.token = Spaceship::ConnectAPI::Token.create(lane_context[SharedValues::APP_STORE_CONNECT_API_KEY])
    else
      Spaceship::ConnectAPI.login(use_portal: false)
    end
  end
end

No Appfile found

fastlane gems

Gem Version Update-Status
fastlane 2.177.0 🚫 Update available

Loaded fastlane plugins:

Plugin Version Update-Status
fastlane-plugin-unzip 1.0.1 ✅ Up-To-Date
fastlane-plugin-INTERNAL-CAN-IGNORE-THIS 0.1.0 💥 Check failed
fastlane-plugin-INTERNAL-UPDATE-NOT-NEEDED 0.2.4 🚫 Update available
fastlane-plugin-ios_dependency_parser 1.0.0 ✅ Up-To-Date
Loaded gems
Gem Version
did_you_mean 1.4.0
bundler 2.1.4
uri 0.10.0
rake 13.0.3
CFPropertyList 3.0.3
concurrent-ruby 1.1.8
i18n 1.8.9
minitest 5.14.3
thread_safe 0.3.6
tzinfo 1.2.9
activesupport 5.2.4.5
public_suffix 4.0.6
addressable 2.7.0
httpclient 2.8.3
json 2.5.1
algoliasearch 1.27.5
artifactory 3.0.15
ast 2.4.1
atomos 0.1.3
attr_extras 4.6.0
aws-eventstream 1.1.1
aws-partitions 1.431.1
aws-sigv4 1.2.3
jmespath 1.4.0
aws-sdk-core 3.112.1
aws-sdk-kms 1.42.0
aws-sdk-s3 1.90.0
descendants_tracker 0.0.4
ice_nine 0.11.2
axiom-types 0.1.1
babosa 1.0.4
claide 1.0.3
colored2 3.1.2
cork 0.3.0
nap 1.1.0
open4 1.3.4
claide-plugins 0.9.2
fuzzy_match 2.0.4
netrc 0.11.0
ffi 1.14.2
ethon 0.12.0
typhoeus 1.4.0
cocoapods-core 1.10.1
cocoapods-deintegrate 1.0.4
cocoapods-downloader 1.4.0
cocoapods-plugins 1.0.0
cocoapods-search 1.0.0
cocoapods-trunk 1.5.0
cocoapods-try 1.2.0
escape 0.0.4
fourflusher 2.3.1
gh_inspector 1.1.3
molinillo 0.6.6
ruby-macho 1.4.0
nanaimo 0.3.0
xcodeproj 1.19.0
cocoapods 1.10.1
cocoapods-check 1.1.0
coercible 1.0.0
colored 1.2
highline 1.7.10
commander-fastlane 4.4.6
faraday-net_http 1.0.1
multipart-post 2.0.0
ruby2_keywords 0.0.4
faraday 1.3.0
faraday-http-cache 2.2.0
rchardet 1.8.0
git 1.7.0
rexml 3.2.4
kramdown 2.3.0
kramdown-parser-gfm 1.1.0
no_proxy_fix 0.1.2
sawyer 0.8.2
octokit 4.20.0
unicode-display_width 1.7.0
terminal-table 1.8.0
danger 8.2.1
danger-plugin-api 1.0.0
danger-iblinter 0.0.5
parallel 1.20.1
parser 3.0.0.0
rainbow 3.0.0
regexp_parser 2.0.3
rubocop-ast 1.3.0
ruby-progressbar 1.10.1
rubocop 1.7.0
danger-rubocop 0.9.3
thor 0.20.3
danger-swiftlint 0.24.5
danger-xcode_summary 0.5.2
declarative 0.0.20
declarative-option 0.1.0
digest-crc 0.6.3
unf_ext 0.0.7.7
unf 0.1.4
domain_name 0.5.20190701
dotenv 2.7.6
emoji_regex 3.2.2
equalizer 0.0.11
events 0.9.8
excon 0.79.0
http-cookie 1.0.3
faraday-cookie_jar 0.0.7
faraday_middleware 1.0.0
fastimage 2.2.3
jwt 2.2.2
memoist 0.16.2
multi_json 1.15.0
os 1.1.1
signet 0.15.0
googleauth 0.16.0
mini_mime 1.0.2
uber 0.1.0
representable 3.0.4
retriable 3.1.2
google-api-client 0.38.0
webrick 1.7.0
google-apis-core 0.3.0
google-apis-iamcredentials_v1 0.2.0
google-apis-storage_v1 0.3.0
google-cloud-env 1.5.0
google-cloud-errors 1.0.1
google-cloud-core 1.5.0
google-cloud-storage 1.30.0
mini_magick 4.11.0
naturally 2.2.1
plist 3.6.0
rubyzip 2.3.0
security 0.1.3
simctl 1.6.8
slack-notifier 2.3.2
terminal-notifier 2.0.0
tty-screen 0.8.1
tty-cursor 0.7.1
tty-spinner 0.9.3
word_wrap 1.0.0
rouge 2.0.7
xcpretty 0.3.0
xcpretty-travis-formatter 1.0.1
google-cloud-bigquery 1.21.2
oauth 0.5.4
jira-ruby 1.5.0
virtus 1.0.5
pr_log 0.2.0
xcpretty-json-formatter 0.1.1

generated on: 2021-03-17

@roryabraham
Copy link

roryabraham commented Mar 20, 2021

I believe we've run into this same issue.

[00:11:10]: Successfully finished processing the build 1.0.5 - 1.0.5.4 for IOS
[00:11:10]: Successfully set the changelog for build
[00:11:10]: Using App Store Connect's default for notifying external testers (which is true) - set `notify_external_testers` for full control
[00:11:10]: Another build is already in review. Going to remove that build and submit the new one.
[00:11:10]: Deleting beta app review submission for build: 1.0.3 - 1.0.3.0
[00:11:23]: The given operation is not allowed - The resource 'betaAppReviewSubmissions' does not allow 'DELETE'. Allowed operations are: GET_COLLECTION, GET_INSTANCE, CREATE

@minuscorp minuscorp changed the title [ISSUE] The resource 'betaAppReviewSubmissions' does not allow 'DELETE' [pilot] The resource 'betaAppReviewSubmissions' does not allow 'DELETE' Mar 20, 2021
@laurentgoudet
Copy link

I can confirm I can reproduce that as well when the reject_build_waiting_for_review flag is set and a beta build is already under review

@andrewclaus
Copy link

This is also an issue for us after switching from logging in with username/password to the App Store Connect API key.

@danl3v
Copy link

danl3v commented Apr 10, 2021

I experienced the same thing

@malcommac
Copy link

Same here

Screenshot 2021-04-16 at 16 06 11

@fastlane-bot
Copy link

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates.

Please make sure to update to the latest fastlane version and check if that solves the issue. Let us know if that works for you by adding a comment 👍

Friendly reminder: contributions are always welcome! Check out CONTRIBUTING.md for more information on how to help with fastlane and feel free to tackle this issue yourself 💪

This issue will be auto-closed if there is no reply within 1 month.

@roryabraham
Copy link

We're still experiencing this issue.

@danl3v
Copy link

danl3v commented May 17, 2021

Yeah don't close this @fastlane-bot

@jonathanlu813
Copy link

I have the same issue today. It was working last week for me though. And I came across this post on Apple Developer Forum: https://developer.apple.com/forums/thread/680143. Indeed ASC API doc didn't mention "DELETE" for betaAppReviewSubmissions... Wonder if it's a recent change.

That said, is there a way to work around this? I feel like it's okay when pilot find out there's a build waiting for/under review and stop right there without throwing an error. Otherwise it's gonna generate quite a lot of noise in our build monitor channel. We just need the "submit for beta review" thing as a best effort.

@danl3v
Copy link

danl3v commented May 18, 2021

@jonathanlu813 yes it would be nice if no error was thrown when reject_build_waiting_for_review is false. We work around it with this code:

begin
  upload_to_testflight(app_identifier: ENV["ITC_APP_IDENTIFIER"],
                       ipa: "#{rc_build_artifacts_path}/#{ENV["SCHEME"]}.ipa",
                       distribute_external: true,
                       changelog: "Explore!",
                       groups: "External Testers",
                       reject_build_waiting_for_review: false)
rescue Exception => e
  if e.message.include? "Another build is in review"
    UI.important("Another build is already in external beta review. Skipping external beta review submission")
  else
    raise
  end
end

@jonathanlu813
Copy link

@danl3v Thanks for the workaround! Just tried an works perfectly.

@fastlane-bot
Copy link

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates.

Please make sure to update to the latest fastlane version and check if that solves the issue. Let us know if that works for you by adding a comment 👍

Friendly reminder: contributions are always welcome! Check out CONTRIBUTING.md for more information on how to help with fastlane and feel free to tackle this issue yourself 💪

This issue will be auto-closed if there is no reply within 1 month.

@AndrewGable
Copy link

This is still an issue for us.

@SuperTango
Copy link

This is still an issue for us as well.

@aidenbenton
Copy link

I'm still getting this issue too.

@Enrico204
Copy link

We're still experiencing this issue too.

pyby added a commit to SRGSSR/playsrg-apple that referenced this issue Oct 20, 2021
`reject_build_waiting_for_review` option does not work anymore. See fastlane/fastlane#18408
pyby added a commit to SRGSSR/playsrg-apple that referenced this issue Oct 20, 2021
`reject_build_waiting_for_review` option does not work anymore. See fastlane/fastlane#18408
@fastlane-bot
Copy link

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates.

Please make sure to update to the latest fastlane version and check if that solves the issue. Let us know if that works for you by adding a comment 👍

Friendly reminder: contributions are always welcome! Check out CONTRIBUTING.md for more information on how to help with fastlane and feel free to tackle this issue yourself 💪

This issue will be auto-closed if there is no reply within 1 month.

@fastlane-bot
Copy link

This issue will be auto-closed because there hasn't been any activity for a few months. Feel free to open a new one if you still experience this problem 👍

@mccarron
Copy link

This is still an issue. Given we can't easily log in via Apple ID anymore on CI machines due to the 2FA requirement, it
would be great if we can get Apple to support this via the AppStore Connect API.

@joshdholtz Do we have a feedback # to report this lack of support we can "me too"?

@joshdholtz
Copy link
Member

Oh! Ummm... we don't but I can reach out to the team to see what we can do! Brb 😁

@mccarron
Copy link

@joshdholtz

@Kiruel
Copy link

Kiruel commented Sep 21, 2022

I don't understand why this issue is closed ? I think we should re-open it. The problem is still here.

@rehannali
Copy link

Still facing same issue uploading build to testflight and is in review.

@danl3v
Copy link

danl3v commented Apr 21, 2023

#18408 (comment) has been working for me as a workaround for years

@kzyryanov
Copy link

I have a feeling that the problem can be easily solved by changing one line in spaceship/lib/spaceship/connect_api/testflight/testflight.rb:120

test_flight_request_client.delete("betaAppReviewSubmissions/#{beta_app_review_submission_id}", params)
to
test_flight_request_client.delete("reviewSubmissionItems/#{beta_app_review_submission_id}", params)

@monchote
Copy link

monchote commented May 2, 2023

I have a feeling that the problem can be easily solved by changing one line in spaceship/lib/spaceship/connect_api/testflight/testflight.rb:120

test_flight_request_client.delete("betaAppReviewSubmissions/#{beta_app_review_submission_id}", params) to test_flight_request_client.delete("reviewSubmissionItems/#{beta_app_review_submission_id}", params)

That didn't work for me. Just to confirm, is beta_app_review_submission_id still supposed to be the ID returned from POST betaAppReviewSubmissions?

@nid90
Copy link

nid90 commented Jul 18, 2023

This issue still exists. The delete API for betaAppReviewSubmissions seems to not exist (anymore?). My workaround for this is to expire the builds in WAITING_FOR_REVIEW before submitting new build for review.

But, it is not just that. The filter condition on which build to remove from submission/expire should also be updated to ensure that only the build hindering the new build is removed.

waiting_for_review_build = app.get_builds(
  filter: { "betaAppReviewSubmission.betaReviewState" => "WAITING_FOR_REVIEW,IN_REVIEW",
            "expired" => false,
            "preReleaseVersion.version" => build.pre_release_version.version },
  includes: "betaAppReviewSubmission,preReleaseVersion"
).first
waiting_for_review_build&.expire!

TestFlight allows multiple builds in review as long their version names are different.

Screenshot 2023-07-18 at 2 25 18 PM

@monchote
Copy link

My workaround for this is to expire the builds in WAITING_FOR_REVIEW before submitting new build for review. But, it is not just that. The filter condition on which build to remove from submission/expire should also be updated to ensure that only the build hindering the new build is removed.

@nid90 This worked wonderfully for us. Thanks so much for sharing!

@arnovanzyl
Copy link

Can verify this is still an issue

@eppisapiafsl
Copy link

This still happen with fastlane 2.216.0

@natak0
Copy link

natak0 commented Feb 9, 2024

This is still an issue for 2.219.0

@mayshi
Copy link

mayshi commented Apr 25, 2024

This is still an issue for 2.220.0.

@AliSoftware
Copy link
Contributor

Opened a PR to apply the fix from above

@AliSoftware AliSoftware reopened this Apr 30, 2024
AliSoftware added a commit that referenced this issue May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.