Ship Cloudflare Sites v1.1
Opera a partir de la evidencia del repositorio y el alcance solicitado por el usuario. Una solicitud para desplegar autoriza el flujo de trabajo de despliegue ordinario para el entorno nombrado; pregunta solo cuando se vuelva necesario un cambio adicional destructivo, irreversible o materialmente más amplio. Nunca infieras un destino de producción a partir de un entorno no especificado.
Descubrir el proyecto
- Lee las instrucciones del repositorio e inspecciona el árbol de trabajo actual antes de editar.
- Ejecuta
scripts/audit-cloudflare-project.sh <project-root>e inspecciona cada bloqueador reportado. - Resuelve el framework, el gestor de paquetes, el adaptador, el punto de entrada del Worker, la configuración de Wrangler, los entornos, los bindings, las migraciones, los dominios, la ruta de CI y los nombres de secretos a partir de los archivos, no de la memoria.
- Utiliza la CLI fijada por el repositorio. Verifica el comportamiento mutable de Cloudflare/OpenNext en la ayuda local
--helpy en la documentación oficial actual antes de hacer cambios remotos. - Lee solo las referencias relevantes:
- Lee references/release-workflow.md para liberación, reversión o iteración de versiones.
- Lee references/cloudflare-resources.md para aprovisionar o modificar D1, R2, secretos, dominios, almacenamiento en caché, entornos u observabilidad.
Elegir el modo de operación
- Auditar/planificar: permanece solo lectura. Devuelve evidencia, bloqueadores, riesgos y las siguientes acciones exactas.
- Desarrollar/configurar: edita y verifica localmente. Crea recursos remotos solo cuando el usuario haya solicitado aprovisionamiento o el despliegue lo requiera.
- Aprovisionar: confirma cuenta, zona, entorno, nombres y propiedad prevista; crea únicamente los recursos faltantes y persiste los IDs devueltos en la configuración elegida.
- Liberar: compila una vez, luego despliega ese artefacto verificado. Usa despliegue directo para liberaciones de bajo riesgo cuando se solicite; usa carga de versiones más promoción controlada para liberaciones arriesgadas o explícitamente graduales.
- Recuperar: selecciona una versión conocida del Worker que sea correcta, luego maneja por separado el estado de D1 y R2. Las versiones del Worker no contienen estado de almacenamiento.
Aplicar salvaguardas invariables
- Distingue los recursos locales, de preview/staging y de producción. Haz explícito el destino de cada comando remoto.
- Mantén los valores secretos fuera del código fuente, la salida, las capturas de pantalla y los argumentos del shell. Reporta solo nombres y presencia.
- Revisa un árbol de trabajo sucio antes de la liberación. No descartes, confirmes ni envíes cambios de usuario no relacionados.
- Modela los cambios en D1 como migraciones ordenadas y prefiere expandir/rellenar/contraer entre liberaciones.
- Usa claves R2 inmutables o versionadas para activos con caché larga. Trata la sobrescritura, eliminación, cambio de CORS y purga de caché como un cambio coordinado.
- Trata los dominios personalizados del Worker y los dominios personalizados de R2 como recursos separados. Verifica de forma independiente el dominio raíz,
www, redirecciones canónicas, certificados y el nombre de host de los activos. - No consideres que una carga es una liberación exitosa. Verifica el nombre de host público, las rutas críticas, el comportamiento respaldado por D1, un objeto R2 representativo y los registros posteriores al despliegue.
Producir un registro de liberación
Devuelve:
- ID de liberación, commit de Git, entorno, nombres de recursos del Worker y almacenamiento;
- cambios de origen/configuración enviados y cambios del árbol de trabajo excluidos;
- puertas locales y sus resultados;
- migraciones de D1 más marcador de recuperación/exportación y orden de compatibilidad;
- cambios en R2/dominio/caché/secretos sin valores de secretos;
- ID de versión/despliegue del Worker y porcentaje de tráfico cuando esté disponible;
- URLs de pruebas de humo y resultados;
- objetivo de reversión, advertencias de almacenamiento y acciones manuales restantes.
Si una puerta falla, detente antes del límite inseguro, conserva la evidencia e indica lo que queda. No debilites una puerta en silencio.