deploy: pre-flight Blaze-tier check + surface tier requirement in firebase init (avoid wasted deploys)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
Línea de trabajo
Comienza en src/deploy/functions/prepare.ts y sigue cómo la preparación del despliegue activa las compilaciones; después inspecciona src/deploy/functions/ensure.ts y nodeBillingError en busca del fallo de Blaze existente. Compara el flujo de billing con src/extensions/checkProjectBilling.ts y src/dataconnect/provisionCloudSql.ts; luego revisa src/init/features/** para las solicitudes de funciones. Se considera terminado cuando los despliegues elegibles fallan antes de realizar trabajo de compilación y las opciones de init que requieren Blaze muestran la nota especificada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Which command?
deploy
Version info
firebase-tools 15.22.3
Platform
All (behaviour is deploy-time-only, platform-independent)
CLI/emulator log
Error: Cloud Functions deployment requires the pay-as-you-go (Blaze) billing plan. To upgrade your project, visit the following URL:
https://console.firebase.google.com/project/<PROJECT>/usage/details
Reproduction steps
- On a project on the free Spark plan, run
firebase init functions(or add Cloud Functions, Extensions, or a Data Connect service). - Write code. Run
firebase deploy. - Deploy proceeds through TS/JS build, packaging, artifact upload, and only then — after minutes of work — fails at
cloudBuildEnabled(seesrc/deploy/functions/ensure.ts,nodeBillingError) with the Blaze-required error.
The same pattern exists for Extensions (src/extensions/checkProjectBilling.ts) and Data Connect / Cloud SQL provisioning (src/dataconnect/provisionCloudSql.ts calls cloudbilling.checkBillingEnabled). Each surface only detects the tier mismatch after significant work — never at firebase init time, and never up-front in firebase deploy.
Expected behavior
Two additive fixes, both cheap:
-
Pre-flight billing check in
deployprepare phase. Beforeprepare.tstriggers builds, callcloudbilling.checkBillingEnabled(projectId)once. If the plan is Spark and the plan targets features known to require Blaze (Cloud Functions of any generation, Extensions, Data Connect with Cloud SQL, App Hosting), fail fast with the same Blaze error. Skips minutes of wasted CPU/network on every doomed deploy. -
Tier badge in
firebase init. When the user picks a feature that requires Blaze, print an inline note (requires the Blaze billing plan) next to the choice — the same wordingnodeBillingErrorproduces at deploy time. Right now the tier requirement is invisible until first deploy fails.
Both changes reuse existing helpers (cloudbilling.checkBillingEnabled, nodeBillingError) — no new API surface, no new dependencies. Feature-to-tier mapping already implicit in the code; just needs to be surfaced.
Files: src/deploy/functions/prepare.ts, src/deploy/functions/ensure.ts, src/init/features/** (per-feature init prompts), src/gcp/cloudbilling.ts (helper, no change).
- Lenguaje dominante
- TypeScript
- Estrellas
- 4.5k
- Forks
- 1.3k
- Merge medio
- 2 d 22 h
- PR fusionados (30 d)
- 83
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de firebase/firebase-tools
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
firebase/firebase-tools#11363 ·
Los mantenedores suelen responder en 1 día
-
api: mcp
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
firebase/firebase-tools#11351 ·
Los mantenedores suelen responder en 1 día
-
CLI HTTP client ignores NO_PROXY, so emulators can’t reach each other behind a proxyPosiblemente ocupada @joehan la tomó hace 11 días. Abiertoemulator-suite type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
firebase/firebase-tools#11249 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
functions:secrets:set and :prune never destroy anything: pruneSecrets filters firebase-managed=true, but labels() writes firebase-managed=functionsPosiblemente ocupada @IzaakGough la tomó hace 45 días. Abiertoapi: functions reproducible type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
firebase/firebase-tools#11066 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Emulator hangs trying to get credentials from cloud with demo serverPosiblemente ocupada @kevmoo la tomó hace 186 días. Abiertoemulators: functions type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
firebase/firebase-tools#10398 ·
Los mantenedores suelen responder en 1 día
Todos los issues de firebase/firebase-tools
Issues similares
-
VS Code extension: clickable file links in chat drop the :line suffix, never jump to the lineAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
MoonshotAI/kimi-code#4398 ·
Los mantenedores suelen responder en 1 día
-
Xiaomi Mimo语音识别服务异常Abiertopending triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
package-lock.json : les binaires natifs macOS et Linux de unrs-resolver ont disparu depuis #1823Abiertobug dependencies
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
AxaFrance/design-system#2064 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100