invertase / flutterfire_cli

A CLI to help with using FlutterFire in your Flutter applications.
Apache License 2.0
170 stars 47 forks source link

ios post build script require flutterfire to be available globally #257

Open cedvdb opened 7 months ago

cedvdb commented 7 months ago

Description

When running flutterfire configure (0.3.0-dev.19), post build scripts are added to ios. Those post build scripts require flutterfire to be installed on the machine building the ios application.

This is a problem because the flutterfire installed locally might not be the same version with which configure was run. Currently, for example, I'm using an hard coded version of the flutterfire cli in this github action so the build process can run https://github.com/cedvdb/action-flutter-build-ios/blob/main/action.yml#L54

I'd propose to use flutterfire_cli installed as a dev_dependency instead and fallback to a global one, so everyone, the CI and all developers can use the same version deterministically.

Related:

Reasoning

It should be deterministic

Additional context and comments

No response

timmolter commented 6 months ago

I noticed this issue today as well and came up with a manual workaround for building my iOS app via Codemagic. First, here's the error I got on codemagic:

    /Users/builder/Library/Developer/Xcode/DerivedData/Runner-edaimyiflreloheqntgnhkmwcclv/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner.build/Script-EAEA39BC9122492C49AD1220.sh: line 5: flutterfire: command not found
    Command PhaseScriptExecution failed with a nonzero exit code

This (flutterfire: command not found) makes sense because unlike my local dev environment, Codemagic never ran dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite anywhere.

My workround was to manually add dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite to the FlutterFire: flutterfire upload-crashlytics-symbols script that flutterfire configure originally created.

Screenshot 2024-03-15 at 22 33 04
frederikstonge commented 5 months ago

I noticed this issue today as well and came up with a manual workaround for building my iOS app via Codemagic. First, here's the error I got on codemagic:

    /Users/builder/Library/Developer/Xcode/DerivedData/Runner-edaimyiflreloheqntgnhkmwcclv/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner.build/Script-EAEA39BC9122492C49AD1220.sh: line 5: flutterfire: command not found
    Command PhaseScriptExecution failed with a nonzero exit code

This (flutterfire: command not found) makes sense because unlike my local dev environment, Codemagic never ran dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite anywhere.

My workround was to manually add dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite to the FlutterFire: flutterfire upload-crashlytics-symbols script that flutterfire configure originally created.

Screenshot 2024-03-15 at 22 33 04

Do you need to install firebase tools too? Or upload-crashlytics-symbols doesn't require them?

benja8151 commented 5 months ago

Do you need to install firebase tools too? Or upload-crashlytics-symbols doesn't require them?

No, flutterfire_cli is enough. I just added pre-build script (in Codemagic):

#!/bin/bash

dart pub global activate flutterfire_cli
RodolfoSilva commented 3 months ago

Do you need to install firebase tools too? Or upload-crashlytics-symbols doesn't require them?

No, flutterfire_cli is enough. I just added pre-build script (in Codemagic):

#!/bin/bash

dart pub global activate flutterfire_cli

Works!!!