codemagic-ci-cd / cli-tools

Various utilities to managing Android and iOS app builds, code signing, and deployment.
https://codemagic.io/start/
GNU General Public License v3.0
235 stars 39 forks source link

Handle empty reponses from Google APIs for listing requests #373

Closed priitlatt closed 8 months ago

priitlatt commented 8 months ago

Firebase releases API has started to return empty respones to listing requests. Handle those by checking if the requested resource key is present in the response object instead of failing unexpectedly with KeyError.

Example traceback:

[17:39:37 08-11-2023] INFO  acting_manager_mixin.py:42 > >>> GET https://firebaseappdistribution.googleapis.com/v1/projects/228333310124/apps/1:228333310124:ios:5e439e0d0231a788ac8f09/releases?orderBy=createTimeDesc&pageSize=1&alt=json None
[17:39:38 08-11-2023] INFO  acting_manager_mixin.py:47 > <<< {}
[17:39:38 08-11-2023] WARNING cli_app.py:121 > Executing "firebase-app-distribution get-latest-build-version" failed unexpectedly. Detailed logs are available at "/var/folders/wr/c44p23x10f302_kfbj32z0p80000gn/T/codemagic-08-11-23.log". To see more details about the error
, add "--verbose" command line option.
[17:39:38 08-11-2023] ERROR cli_app.py:123 > Exception traceback:
Traceback (most recent call last):
  File "/Users/priit/development/nevercode/cli-tools/src/codemagic/cli/cli_app.py", line 213, in invoke_cli
    CliApp._running_app._invoke_action(args)
  File "/Users/priit/development/nevercode/cli-tools/src/codemagic/cli/cli_app.py", line 170, in _invoke_action
    return cli_action(**action_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/development/nevercode/cli-tools/src/codemagic/cli/cli_app.py", line 465, in wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/development/nevercode/cli-tools/src/codemagic/tools/firebase_app_distribution/actions/get_latest_build_version_action.py", line 23, in get_latest_build_version
    releases = self.client.releases.list(app_identifier, limit=1)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/development/nevercode/cli-tools/src/codemagic/google/resource_managers/mixins/listing_manager_mixin.py", line 68, in list
    resources.extend(self.resource_type(**item) for item in response[self.resource_type.get_label()])
                                                            ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'releases'

Updated actions: