Last active
April 8, 2021 17:10
-
-
Save GuilhE/7f9ef4393605c1d74b3e89a9af72be1c to your computer and use it in GitHub Desktop.
Firebase App Distribution (locally)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
BOLD=$(tput bold) | |
NORMAL=$(tput sgr0) | |
PROPERTY_FILE=local.properties | |
function getProperty() { | |
PROP_KEY=$1 | |
# shellcheck disable=SC2002 | |
PROP_VALUE=$(cat $PROPERTY_FILE | grep -w "$PROP_KEY" | cut -d'=' -f2-) | |
echo "$PROP_VALUE" | |
} | |
PRODUCT_FLAVOR="all" | |
BUILD_TYPE="?" | |
FIREBASE_REFRESH_TOKEN="" | |
RELEASE_NOTES="" | |
while getopts f:b:t:n: option; do | |
case "${option}" in | |
f) PRODUCT_FLAVOR=${OPTARG} ;; | |
b) BUILD_TYPE=${OPTARG} ;; | |
t) FIREBASE_REFRESH_TOKEN=${OPTARG} ;; | |
n) RELEASE_NOTES=${OPTARG} ;; | |
*) | |
printf "\nUsage: firebaseLocalDistribution [-f string] [-b string] [-t string] [-n string] | |
\t-f,\tproduct flavor to distribute [dev; qa; prd; all], if not specified \"all\" will be used | |
\t-b,\tbuild type to distribute [debug; release] | |
\t-t,\tfirebase refresh token, if not specified fallback will be used (local.properties, firebaseRefreshToken property) | |
\t-n,\trelease notes message\n\n" | |
exit 1 | |
;; | |
esac | |
done | |
printf "\n%s\n" "${BOLD}> Checking for Firebase Token${NORMAL}" | |
if [ "$FIREBASE_REFRESH_TOKEN" == "" ]; then | |
printf "%s\n" "No ${BOLD}firebaseRefreshToken${NORMAL} value specified. Default location for fetching value will be used..." | |
FIREBASE_REFRESH_TOKEN=$(getProperty "firebaseRefreshToken") | |
if [ "$FIREBASE_REFRESH_TOKEN" == "" ]; then | |
printf "%s\n\n" "Bummer! No ${BOLD}firebaseRefreshToken${NORMAL} found in local.properties!" | |
exit 1 | |
fi | |
fi | |
printf "\n%s\n" "${BOLD}> Distribution${NORMAL}" | |
export FIREBASE_TOKEN=$FIREBASE_REFRESH_TOKEN | |
echo "$RELEASE_NOTES" > releasenotes.txt | |
chmod +x ./gradlew | |
./gradlew --stop #Only needed for environment variable changes | |
if [ "$BUILD_TYPE" == "release" ]; then | |
if [ "$PRODUCT_FLAVOR" == "all" ]; then | |
echo "Starting all flavors Release distribution..." | |
./gradlew assembleDevRelease appDistributionUploadDevRelease --stacktrace | |
./gradlew assembleQaRelease appDistributionUploadQaRelease --stacktrace | |
./gradlew assembleProdRelease appDistributionUploadProdRelease --stacktrace | |
elif [ "$PRODUCT_FLAVOR" == "dev" ]; then | |
echo "Starting DEV flavor Release distribution..." | |
./gradlew assembleDevRelease appDistributionUploadDevRelease --stacktrace | |
elif [ "$PRODUCT_FLAVOR" == "qa" ]; then | |
echo "Starting QA flavor Release distribution..." | |
./gradlew assembleQaRelease appDistributionUploadQaRelease --stacktrace | |
elif [ "$PRODUCT_FLAVOR" == "prd" ]; then | |
echo "Starting PRD flavor Release distribution..." | |
./gradlew assembleProdRelease appDistributionUploadProdRelease --stacktrace | |
else | |
printf "%s\n\n" "Bummer! Project flavor ${BOLD}$PRODUCT_FLAVOR${NORMAL} unknown!" | |
fi | |
elif [ "$BUILD_TYPE" == "debug" ]; then | |
if [ "$PRODUCT_FLAVOR" == "all" ]; then | |
echo "Starting all flavors Debug distribution..." | |
./gradlew assembleDevDebug appDistributionUploadDevDebug --stacktrace | |
./gradlew assembleQaDebug appDistributionUploadQaDebug --stacktrace | |
./gradlew assembleProdDebug appDistributionUploadProdDebug --stacktrace | |
elif [ "$PRODUCT_FLAVOR" == "dev" ]; then | |
echo "Starting DEV flavor Debug distribution..." | |
./gradlew assembleDevDebug appDistributionUploadDevDebug --stacktrace | |
elif [ "$PRODUCT_FLAVOR" == "qa" ]; then | |
echo "Starting QA flavor Debug distribution..." | |
./gradlew assembleQaDebug appDistributionUploadQaDebug --stacktrace | |
elif [ "$PRODUCT_FLAVOR" == "prd" ]; then | |
echo "Starting PRD flavor Debug distribution..." | |
./gradlew assembleProdDebug appDistributionUploadProdDebug --stacktrace | |
else | |
printf "%s\n\n" "Bummer! Project flavor ${BOLD}$PRODUCT_FLAVOR${NORMAL} unknown!" | |
fi | |
else | |
printf "%s\n\n" "Bummer! Build type ${BOLD}$BUILD_TYPE${NORMAL} unknown!" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Firebase App Distribution (locally)
To distribute app-variants with one simple command by taking advantage of this helper bash script, you need to use com.google.firebase.appdistribution gradle plugin and:
Grab some 🍿 and wait for the result.