Entornos de vista previa
Cada pull request obtiene su propio despliegue en vivo con una URL única. Revisa cambios en un entorno real antes de fusionar, y limpia automáticamente cuando el PR se cierra.
¿Qué son los entornos de vista previa?
Los entornos de vista previa son despliegues temporales y completamente funcionales creados automáticamente para cada pull request. Te permiten probar cambios en un entorno aislado que refleja producción, sin afectar tu aplicación en vivo.
Cuando un miembro del equipo abre un PR, sh0 compila la rama, la despliega en una URL única y publica un comentario en el PR con un enlace a la vista previa. Cuando el PR se fusiona o se cierra, el entorno de vista previa se destruye automáticamente.
Habilitar vistas previas
Los entornos de vista previa se habilitan por aplicación. Navega a Configuración de la aplicación → Git → Entornos de vista previa y activa la función. Necesitarás un proveedor Git conectado (GitHub, GitLab o Bitbucket) con acceso de webhook.
Una vez habilitados, sh0 escucha los eventos de pull request de tu proveedor Git:
- PR abierto: Compilar y desplegar la rama
- PR actualizado (nuevo push): Recompilar y redesplegar
- PR fusionado o cerrado: Destruir el entorno de vista previa
Despliegues automáticos de PR
Cuando se abre un pull request, sh0 automáticamente:
- Clona la rama del PR
- Construye una imagen Docker usando el mismo pipeline de compilación que producción
- Inicia un nuevo contenedor con el código del PR
- Asigna una URL de vista previa única
- Publica un comentario en el PR con el enlace de vista previa y el estado de compilación
- Actualiza la verificación de estado del PR (marca verde o cruz roja)
Cuando se envían nuevos commits a la rama del PR, sh0 automáticamente recompila y redespliega la vista previa. La URL permanece igual, por lo que los revisores siempre ven la última versión.
main). Esto evita compilaciones innecesarias para PRs entre ramas de características.URLs de vista previa
Cada entorno de vista previa recibe una URL única basada en el nombre de la rama y el nombre de la aplicación:
https://{branch-name}.{app-name}.your-domain.comPor ejemplo, si tu aplicación se llama my-api y la rama del PR es feature/new-auth, la URL de vista previa sería:
https://feature-new-auth.my-api.sh0.appLos nombres de rama se sanitizan para su uso en URLs: las barras se reemplazan con guiones y los caracteres especiales se eliminan. Los certificados SSL se aprovisionan automáticamente para cada URL de vista previa vía Caddy.
*.my-api.your-domain.com), las URLs de vista previa funcionan de inmediato. De lo contrario, sh0 aprovisiona registros DNS individuales para cada vista previa.Configuración de entornos de vista previa
Puedes personalizar el comportamiento de los entornos de vista previa:
- Filtro de rama base: Solo construir vistas previas para PRs dirigidos a ramas específicas
- Anulaciones de variables de entorno: Establece variables específicas de vista previa (por ejemplo,
NODE_ENV=staging) - Límites de recursos: Limita CPU y memoria de los contenedores de vista previa para ahorrar recursos
- TTL (tiempo de vida): Destruye automáticamente las vistas previas después de una duración especificada, incluso si el PR sigue abierto
- Máximo de vistas previas concurrentes: Limita el número de entornos de vista previa activos para controlar el uso de recursos
Limpieza automática
Cuando un pull request se fusiona o se cierra, sh0 limpia automáticamente el entorno de vista previa:
- El contenedor de vista previa se detiene y se elimina
- La imagen Docker se elimina para liberar espacio en disco
- La ruta de Caddy se elimina
- El certificado SSL se limpia
- Los volúmenes específicos de la vista previa se eliminan (a menos que estén configurados para persistir)
También puedes destruir manualmente un entorno de vista previa desde el panel de control sin cerrar el PR. Esto es útil si una vista previa está consumiendo recursos y ya no se necesita para la revisión.
Aislamiento de base de datos
Los entornos de vista previa se pueden configurar para usar bases de datos aisladas. sh0 admite dos estrategias:
- Base de datos compartida: Los entornos de vista previa se conectan a la misma base de datos que staging o producción (se recomienda solo lectura). Configúralo mediante anulaciones de variables de entorno.
- Base de datos aislada: sh0 levanta un contenedor de base de datos dedicado para cada vista previa. La base de datos se inicializa desde una instantánea o script de migración y se destruye con la vista previa.
preview:
enabled: true
database_isolation: true
seed_command: "pg_restore --dbname=$DATABASE_URL /seeds/staging.dump"
max_concurrent: 5
ttl: 72h