# Prepare and get deployment directory (using absolute paths)
/full/path/to/firebase-scripts/manage.sh prepare-deploy \
--project-dir /full/path/to/esg_microservices_platform \
--services-dir services \
--project your-project-id \
--public-api-only
# Deploy (use the directory path from above)
/full/path/to/firebase-scripts/manage.sh deploy-from \
--dir /tmp/firebase-deployment-XXXXXX \
--project your-project-id/full/path/to/firebase-scripts/manage.sh prepare-deploy --project-dir /full/path/to/esg_microservices_platform --services-dir services --project your-project-id --public-api-only/full/path/to/firebase-scripts/manage.sh deploy-from --dir /tmp/firebase-deployment-XXXXXX --project your-project-iddu -sh /tmp/firebase-deployment-XXXXXX # Should be ~1.2MBfirebase functions:list --project your-project-idcurl https://europe-west1-your-project-id.cloudfunctions.net/publicApiHealthfirebase functions:delete FUNCTION_NAME --project your-project-id --forceDeployment will show IAM errors - this is expected!
Organization policies prevent automated permission setting. You must manually set permissions in Google Cloud Console:
- Cloud Run → your-project-id
- Click each function:
queryproductscores,querybrandscores,searchscores,publicapihealth - Security → Add Principal →
allUsers→ Cloud Run Invoker
Test after setting permissions:
curl https://europe-west1-your-project-id.cloudfunctions.net/publicApiHealth- ✅ Deployment size ~1.2MB (not 150MB+)
- ✅ Only 4 functions deployed
- ✅ Health endpoint returns 200 OK
- ✅ No
node_modulesin deployment directory - ✅ Firebase Admin logs show "your-project-id project"
| Issue | Solution |
|---|---|
| Large deployment (150MB+) | Use --public-api-only flag |
| 403 Forbidden | Set function permissions in Cloud Console |
| No changes detected | Delete function first, then redeploy |
| Auth errors | Check Firebase project ID consistency |
For detailed workflow, see /docs/DEPLOYMENT_WORKFLOW.md