iosxcodecirclecifaradayfirebase-app-distribution

Firebase iOS Distribution Faraday server error 403


I'm using Circle-Ci and Firebase App Distribution for our Continuous Distribution Every thing was working perfectly until today I'm receiving the below error:

[10:52:11]: --- Step: firebase_app_distribution ---
[10:52:11]: ---------------------------------------
[10:52:11]: Authenticating with FIREBASE_TOKEN environment variable
[10:52:12]: 🔐 Authenticated successfully.
[10:52:12]: ⌛ Uploading the IPA.
[10:52:13]: An error occurred while executing the `error` block:
[10:52:19]: undefined method `error_info' for #<Faraday::ForbiddenError:0x00007fe597865d38>


bundler: failed to load command: fastlane (/Users/distiller/project/vendor/bundle/ruby/2.7.0/bin/fastlane)
Faraday::ForbiddenError: [!] the server responded with status 403
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday-1.3.0/lib/faraday/response/raise_error.rb:20:in `on_complete'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday-1.3.0/lib/faraday/middleware.rb:19:in `block in call'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday-1.3.0/lib/faraday/response.rb:59:in `on_complete'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday-1.3.0/lib/faraday/middleware.rb:18:in `call'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday_middleware-1.0.0/lib/faraday_middleware/response_middleware.rb:36:in `call'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday-1.3.0/lib/faraday/rack_builder.rb:154:in `build_response'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday-1.3.0/lib/faraday/connection.rb:492:in `run_request'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/faraday-1.3.0/lib/faraday/connection.rb:279:in `post'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-plugin-firebase_app_distribution-0.2.5/lib/fastlane/plugin/firebase_app_distribution/client/firebase_app_distribution_api_client.rb:123:in `upload_binary'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-plugin-firebase_app_distribution-0.2.5/lib/fastlane/plugin/firebase_app_distribution/client/firebase_app_distribution_api_client.rb:153:in `upload'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-plugin-firebase_app_distribution-0.2.5/lib/fastlane/plugin/firebase_app_distribution/actions/firebase_app_distribution_action.rb:31:in `run'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:263:in `block (2 levels) in execute_action'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/actions/actions_helper.rb:69:in `execute_action'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:229:in `chdir'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
  Fastfile:50:in `block (2 levels) in parsing_binding'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/lane.rb:33:in `call'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/commands_generator.rb:352:in `run'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/fastlane/lib/fastlane/cli_tools_distributor.rb:122:in `take_off'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/gems/fastlane-2.173.0/bin/fastlane:23:in `<top (required)>'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/bin/fastlane:23:in `load'
  /Users/distiller/project/vendor/bundle/ruby/2.7.0/bin/fastlane:23:in `<top (required)>'

Exited with code exit status 1

I tried updating the following:

bundle update fastlane bundle exec fastlane update_plugins

but still the same error.


Solution

  • After lot of searching I was able to find what went wrong:

    To summarize: FIREBASE_TOKEN was either expired or revoked so I had to refresh it again, and as Faraday is used by Firebase then it needs to use FIREBASE_TOKEN to upload the API.

    I Followed steps from this link:

    Generating a CLI Token
    Firebase requires a token to used during authentication. To generate the token, we need to use the Firebase CLI and a browser - as CircleCI is a headless environment, we will need to generate this token locally, rather than at runtime, then add it to CircleCI as an environment variable.

    Download and install the Firebase CLI locally with the command curl -sL https://firebase.tools | bash Trigger a login by using the command firebase login:ci Complete the sign in via the browser window, then copy the token provided in the Terminal output Go to your project settings in CircleCI and create a new environment variable named FIREBASE_TOKEN with the value of the token.