Despliegue público de la demo (CLOUD-03)¶
El workflow .github/workflows/deploy-public.yml solo se activa desde main
o mediante workflow_dispatch. Primero comprueba que exista la configuración
del environment schemasafe-demo; si faltan credenciales, deja un resumen
blocked y no ejecuta comandos Azure, Docker ni Cloudflare Pages.
Requisitos del environment¶
Configurar fuera del repositorio, con mínimo privilegio y OIDC:
AZURE_CLIENT_ID,AZURE_TENANT_IDyAZURE_SUBSCRIPTION_IDpara una identidad federada limitada al Resource Group de M10.CLOUDFLARE_API_TOKENcon permisos mínimos para publicar los dos proyectos de Pages yCLOUDFLARE_ACCOUNT_IDcomo variable no sensible.CLOUDFLARE_FRONTEND_PROJECTyCLOUDFLARE_DOCS_PROJECTcomo variables; sus URLs seránhttps://<proyecto>.pages.dev.SCHEMASAFE_PUBLIC_TOKENpermanece solo en el smoke autenticado; nunca se inyecta en el build frontend.- Variables no sensibles opcionales:
SCHEMASAFE_RESOURCE_GROUP,SCHEMASAFE_AZURE_LOCATION,SCHEMASAFE_PROJECT_NAME,SCHEMASAFE_ENVIRONMENT_NAMEySCHEMASAFE_PROJECT_ID. SCHEMASAFE_POSTGRES_ENABLEDesfalsepor defecto. Solo debe cambiarse atruedespués de confirmar en Azure Portal que B1ms está cubierto por la cuota de la suscripción; al activarlo también se requierenSCHEMASAFE_DATABASE_URLySCHEMASAFE_POSTGRES_ADMIN_PASSWORD.
La imagen se publica en GHCR con el SHA del commit, Bicep despliega el backend
seguro con SQLite/fixtures por defecto en westus y el job publica frontend y manuales en Cloudflare
Pages Free. Al final, el workflow muestra las URLs y bloquea la entrega si
health/readiness falla.
En el entorno Express de Container Apps, cambiar un secreto no reemplaza una
réplica que ya estaba ejecutándose. Por eso el workflow publica además una
segunda etiqueta inmutable del mismo digest (<sha>-secretref) y la usa justo
después de configurar secretref:schemasafe-auth-signing-key; ese cambio crea
una réplica nueva que recibe el secreto en su entorno sin escribir la clave en
la imagen, el repositorio o los logs. minReplicas=0 y maxReplicas=1 se
mantienen sin cambios.
Límites y rollback¶
No se guardan credenciales ni URI en el repositorio. PostgreSQL permanece opcional y la configuración pública por defecto usa fixtures. Para rollback se conserva la imagen por SHA y se usa el procedimiento de OPS-04 con una revisión saludable; no se elimina el Resource Group durante una recuperación.
Mientras el environment no esté configurado, no existe una URL pública
verificable. La URL real debe registrarse como SCHEMASAFE_PUBLIC_URL en la
evidencia posterior al despliegue; no se inventa durante CI.