firebase/fastlane-plugin-firebase_app_distribution

upload_timeout parameter has no effect

giilby opened this issue ยท 3 comments

giilby commented

Issue Description

When uploading from a network with slow upload speeds, our upload sometimes times out. I tried to increase upload_timeout from the default of 120s to something higher, but it didn't have any effect. Then, I set it to 2s, which also had no effect (see the logging output below from an upload test on a very fast network). Is the setting not being applied? Additionally, this setting is not currently mentioned in the docs at https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane.

Configuration
firebase_app_distribution(
    app: "APP_ID",
    groups: "some-group",
    release_notes: "some release notes",
    upload_timeout: 2
)
Complete verbose output
[11:18:12]: ---------------------------------------
[11:18:12]: --- Step: firebase_app_distribution ---
[11:18:12]: ---------------------------------------
[11:18:12]: Warning: Debug logging enabled. Output may include sensitive information.
[11:18:12]: ๐Ÿ” Authenticating with FIREBASE_TOKEN environment variable
[11:18:12]: โŒ› Uploading the IPA.
D, [2024-01-12T11:18:12.450110 #4365] DEBUG -- : Sending HTTP post https://firebaseappdistribution.googleapis.com/upload/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases:upload?
D, [2024-01-12T11:18:16.954276 #4365] DEBUG -- : 200
D, [2024-01-12T11:18:16.956321 #4365] DEBUG -- : #<HTTP::Message:0x000000014738b308 @http_body=#<HTTP::Message::Body:0x000000014738b268 @body="{\n" + "  \"name\": \"projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID\"\n" + "}\n", @chunk_size=nil, @positions=nil, @size=0>, @http_header=#<HTTP::Message::Headers:0x000000014738b2e0 @body_charset=nil, @body_date=nil, @body_encoding=#<Encoding:UTF-8>, @body_size=0, @body_type=nil, @chunked=false, @dumped=false, @header_item=[["X-GUploader-UploadID", "ABPtcPq0xBLG1GVchXP90I8OWq_M53PRV-jssmMppH_Fg8STokjzz3siR69GQ3ckIBhs8-KcpNw"], ["Content-Type", "application/json; charset=UTF-8"], ["Vary", "Origin"], ["Vary", "X-Origin"], ["Vary", "Referer"], ["Content-Length", "164"], ["Date", "Fri, 12 Jan 2024 17:18:16 GMT"], ["Server", "UploadServer"], ["Alt-Svc", "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000"]], @http_version="1.1", @is_request=false, @reason_phrase="OK", @request_absolute_uri=nil, @request_method="POST", @request_query=nil, @request_uri=#<Addressable::URI:0x1bf8 URI:https://firebaseappdistribution.googleapis.com/upload/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases:upload?>, @status_code=200>, @peer_cert=#<OpenSSL::X509::Certificate subject=#<OpenSSL::X509::Name CN=upload.video.google.com>, issuer=#<OpenSSL::X509::Name CN=GTS CA 1C3,O=Google Trust Services LLC,C=US>, serial=#<OpenSSL::BN 17851553526684096801775809495725313123>, not_before=2023-11-20 08:08:50 UTC, not_after=2024-02-12 08:08:49 UTC>, @previous=nil>
D, [2024-01-12T11:18:16.956836 #4365] DEBUG -- : Success - "{\n" +
"  \"name\": \"projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID\"\n" +
"}\n"

[11:18:16]: ๐Ÿ•ต๏ธ Validating upload.
D, [2024-01-12T11:18:16.958715 #4365] DEBUG -- : Sending HTTP get https://firebaseappdistribution.googleapis.com/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID?
D, [2024-01-12T11:18:17.148217 #4365] DEBUG -- : 200
D, [2024-01-12T11:18:17.149985 #4365] DEBUG -- : #<HTTP::Message:0x00000001114bd0e0 @http_body=#<HTTP::Message::Body:0x00000001114bd040 @body="{\n" + "  \"name\": \"projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID\"\n" + "}\n", @chunk_size=nil, @positions=nil, @size=0>, @http_header=#<HTTP::Message::Headers:0x00000001114bd0b8 @body_charset=nil, @body_date=nil, @body_encoding=#<Encoding:UTF-8>, @body_size=0, @body_type=nil, @chunked=false, @dumped=false, @header_item=[["Content-Type", "application/json; charset=UTF-8"], ["Vary", "Origin"], ["Vary", "X-Origin"], ["Vary", "Referer"], ["Content-Encoding", "gzip"], ["Date", "Fri, 12 Jan 2024 17:18:17 GMT"], ["Server", "ESF"], ["Cache-Control", "private"], ["X-XSS-Protection", "0"], ["X-Frame-Options", "SAMEORIGIN"], ["X-Content-Type-Options", "nosniff"], ["Alt-Svc", "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000"], ["Transfer-Encoding", "chunked"]], @http_version="1.1", @is_request=false, @reason_phrase="OK", @request_absolute_uri=nil, @request_method="GET", @request_query=nil, @request_uri=#<Addressable::URI:0x1c0c URI:https://firebaseappdistribution.googleapis.com/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID?>, @status_code=200>, @peer_cert=#<OpenSSL::X509::Certificate subject=#<OpenSSL::X509::Name CN=upload.video.google.com>, issuer=#<OpenSSL::X509::Name CN=GTS CA 1C3,O=Google Trust Services LLC,C=US>, serial=#<OpenSSL::BN 17851553526684096801775809495725313123>, not_before=2023-11-20 08:08:50 UTC, not_after=2024-02-12 08:08:49 UTC>, @previous=nil>
D, [2024-01-12T11:18:17.151039 #4365] DEBUG -- : Success - #<Google::Apis::FirebaseappdistributionV1::GoogleLongrunningOperation:0x000000011148d520
 @name=
  "projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID">

D, [2024-01-12T11:18:22.153456 #4365] DEBUG -- : Sending HTTP get https://firebaseappdistribution.googleapis.com/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID?
D, [2024-01-12T11:18:22.286756 #4365] DEBUG -- : 200
D, [2024-01-12T11:18:22.289108 #4365] DEBUG -- : #<HTTP::Message:0x000000011146f048 @http_body=#<HTTP::Message::Body:0x000000011146efa8 @body="{\n" + "  \"name\": \"projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID\",\n" + "  \"done\": true,\n" + "  \"response\": {\n" + "    \"@type\": \"type.googleapis.com/google.firebase.appdistro.v1.UploadReleaseResponse\",\n" + "    \"result\": \"RELEASE_CREATED\",\n" + "    \"release\": {\n" + "      \"name\": \"projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID\",\n" + "      \"displayVersion\": \"1.2.3\",\n" + "      \"buildVersion\": \"1\",\n" + "      \"createTime\": \"2024-01-12T17:18:18.747201Z\",\n" + "      \"firebaseConsoleUri\": \"https://console.firebase.google.com/project/firebase-project-slug/appdistribution/app/ios:com.org.name/releases/RELEASE_ID\",\n" + "      \"testingUri\": \"https://appdistribution.firebase.google.com/testerapps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID\",\n" + "      \"binaryDownloadUri\": \"https://firebaseappdistribution.googleapis.com/app-binary-downloads/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID/binaries/BINARY_ID/app.ipa?token=TOKEN\"\n" + "    }\n" + "  }\n" + "}\n", @chunk_size=nil, @positions=nil, @size=0>, @http_header=#<HTTP::Message::Headers:0x000000011146f020 @body_charset=nil, @body_date=nil, @body_encoding=#<Encoding:UTF-8>, @body_size=0, @body_type=nil, @chunked=false, @dumped=false, @header_item=[["Content-Type", "application/json; charset=UTF-8"], ["Vary", "Origin"], ["Vary", "X-Origin"], ["Vary", "Referer"], ["Content-Encoding", "gzip"], ["Date", "Fri, 12 Jan 2024 17:18:22 GMT"], ["Server", "ESF"], ["Cache-Control", "private"], ["X-XSS-Protection", "0"], ["X-Frame-Options", "SAMEORIGIN"], ["X-Content-Type-Options", "nosniff"], ["Alt-Svc", "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000"], ["Transfer-Encoding", "chunked"]], @http_version="1.1", @is_request=false, @reason_phrase="OK", @request_absolute_uri=nil, @request_method="GET", @request_query=nil, @request_uri=#<Addressable::URI:0x1c20 URI:https://firebaseappdistribution.googleapis.com/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID?>, @status_code=200>, @peer_cert=#<OpenSSL::X509::Certificate subject=#<OpenSSL::X509::Name CN=upload.video.google.com>, issuer=#<OpenSSL::X509::Name CN=GTS CA 1C3,O=Google Trust Services LLC,C=US>, serial=#<OpenSSL::BN 17851553526684096801775809495725313123>, not_before=2023-11-20 08:08:50 UTC, not_after=2024-02-12 08:08:49 UTC>, @previous=nil>
D, [2024-01-12T11:18:22.290596 #4365] DEBUG -- : Success - #<Google::Apis::FirebaseappdistributionV1::GoogleLongrunningOperation:0x000000011143d390
 @done=true,
 @name=
  "projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/-/operations/BINARY_ID",
 @response=
  {"@type"=>
    "type.googleapis.com/google.firebase.appdistro.v1.UploadReleaseResponse",
   "result"=>"RELEASE_CREATED",
   "release"=>
    {"name"=>
      "projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID",
     "displayVersion"=>"1.2.3",
     "buildVersion"=>"1",
     "createTime"=>"2024-01-12T17:18:18.747201Z",
     "firebaseConsoleUri"=>
      "https://console.firebase.google.com/project/firebase-project-slug/appdistribution/app/ios:com.org.name/releases/RELEASE_ID",
     "testingUri"=>
      "https://appdistribution.firebase.google.com/testerapps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID",
     "binaryDownloadUri"=>
      "https://firebaseappdistribution.googleapis.com/app-binary-downloads/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID/binaries/BINARY_ID/app.ipa?token=TOKEN"}}>

[11:18:22]: โœ… Uploaded IPA successfully and created release 1.2.3 (1).
[11:18:22]: ๐Ÿ“œ Setting release notes.
D, [2024-01-12T11:18:22.292182 #4365] DEBUG -- : Sending HTTP patch https://firebaseappdistribution.googleapis.com/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID?
D, [2024-01-12T11:18:22.423018 #4365] DEBUG -- : 200
D, [2024-01-12T11:18:22.425256 #4365] DEBUG -- : #<HTTP::Message:0x00000001113deb88 @http_body=#<HTTP::Message::Body:0x00000001113deae8 @body="{\n" + "  \"name\": \"projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID\",\n" + "  \"releaseNotes\": {\n" + "    \"text\": \"Upload test for bug report\"\n" + "  },\n" + "  \"displayVersion\": \"1.2.3\",\n" + "  \"buildVersion\": \"1\",\n" + "  \"createTime\": \"2024-01-12T17:18:18.747201Z\",\n" + "  \"firebaseConsoleUri\": \"https://console.firebase.google.com/project/firebase-project-slug/appdistribution/app/ios:com.org.name/releases/RELEASE_ID\",\n" + "  \"testingUri\": \"https://appdistribution.firebase.google.com/testerapps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID\",\n" + "  \"binaryDownloadUri\": \"https://firebaseappdistribution.googleapis.com/app-binary-downloads/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID/binaries/BINARY_ID/app.ipa?token=TOKEN\"\n" + "}\n", @chunk_size=nil, @positions=nil, @size=0>, @http_header=#<HTTP::Message::Headers:0x00000001113deb60 @body_charset=nil, @body_date=nil, @body_encoding=#<Encoding:UTF-8>, @body_size=0, @body_type=nil, @chunked=false, @dumped=false, @header_item=[["Content-Type", "application/json; charset=UTF-8"], ["Vary", "Origin"], ["Vary", "X-Origin"], ["Vary", "Referer"], ["Content-Encoding", "gzip"], ["Date", "Fri, 12 Jan 2024 17:18:22 GMT"], ["Server", "ESF"], ["Cache-Control", "private"], ["X-XSS-Protection", "0"], ["X-Frame-Options", "SAMEORIGIN"], ["X-Content-Type-Options", "nosniff"], ["Alt-Svc", "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000"], ["Transfer-Encoding", "chunked"]], @http_version="1.1", @is_request=false, @reason_phrase="OK", @request_absolute_uri=nil, @request_method="PATCH", @request_query=nil, @request_uri=#<Addressable::URI:0x1c34 URI:https://firebaseappdistribution.googleapis.com/v1/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID?>, @status_code=200>, @peer_cert=#<OpenSSL::X509::Certificate subject=#<OpenSSL::X509::Name CN=upload.video.google.com>, issuer=#<OpenSSL::X509::Name CN=GTS CA 1C3,O=Google Trust Services LLC,C=US>, serial=#<OpenSSL::BN 17851553526684096801775809495725313123>, not_before=2023-11-20 08:08:50 UTC, not_after=2024-02-12 08:08:49 UTC>, @previous=nil>
D, [2024-01-12T11:18:22.427173 #4365] DEBUG -- : Success - #<Google::Apis::FirebaseappdistributionV1::GoogleFirebaseAppdistroV1Release:0x00000001113adb00
 @binary_download_uri=
  "https://firebaseappdistribution.googleapis.com/app-binary-downloads/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID/binaries/BINARY_ID/app.ipa?token=TOKEN",
 @build_version="1",
 @create_time="2024-01-12T17:18:18.747201Z",
 @display_version="1.2.3",
 @firebase_console_uri=
  "https://console.firebase.google.com/project/firebase-project-slug/appdistribution/app/ios:com.org.name/releases/RELEASE_ID",
 @name=
  "projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID",
 @release_notes=
  #<Google::Apis::FirebaseappdistributionV1::GoogleFirebaseAppdistroV1ReleaseNotes:0x000000011139f438
   @text="Upload test for bug report">,
 @testing_uri=
  "https://appdistribution.firebase.google.com/testerapps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID">

[11:18:22]: โฉ No testers or groups passed in. Skipping this step.
[11:18:22]: ๐ŸŽ‰ App Distribution upload finished successfully. Setting Actions.lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] to the uploaded release.
[11:18:22]: ๐Ÿ”— View this release in the Firebase console: https://console.firebase.google.com/project/firebase-project-slug/appdistribution/app/ios:com.org.name/releases/RELEASE_ID
[11:18:22]: ๐Ÿ”— Share this release with testers who have access: https://appdistribution.firebase.google.com/testerapps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID
[11:18:22]: ๐Ÿ”— Download the release binary (link expires in 1 hour): https://firebaseappdistribution.googleapis.com/app-binary-downloads/projects/PROJECT_ID/apps/1:PROJECT_ID:ios:APP_ID/releases/RELEASE_ID/binaries/BINARY_ID/app.ipa?token=TOKEN

+------------------------------------------------+
|                fastlane summary                |
+------+---------------------------+-------------+
| Step | Action                    | Time (in s) |
+------+---------------------------+-------------+
...
| 6    | firebase_app_distribution | 10          |
+------+---------------------------+-------------+

[11:18:22]: fastlane.tools finished successfully ๐ŸŽ‰
Environment
Library Version
fastlane 2.219.0
fastlane-plugin-firebase_app_distribution 0.8.0

We tried to fix this with #331, but apparently that was not enough.

@giilby Thanks for the report. I was able to reproduce this and it appears to be fixed in 0.8.1. Can you please try upgrading and see if that resolves the issue for you?

giilby commented

@lfkellogg Yep, 0.8.1 fixed it! Thanks for the quick turnaround.