Cómo un merge request recibe su vista previa
El cambio se aprueba
El pipeline propio de un merge request ejecuta código que nadie revisó todavía, así que no tiene ninguna credencial de la nube y no despliega nada. Cuando la compuerta de aprobación aprueba el merge request de un producto, inicia las ejecuciones del ejecutor para ese commit exacto: los planes, la construcción de imágenes y la vista previa. Un producto cuyo estado en el catálogo es retiring no recibe vista previa, porque no sirve nada.
El ejecutor la despliega
La ejecución de la vista previa espera hasta 25 minutos la construcción del último commit del merge request, y se detiene si la construcción falló. Luego, con la identidad de aplicación de no producción del producto, planifica la raíz infra/eph del producto, pasa el paquete de políticas sobre el plan, le pone precio y lo aplica. La identidad de producción nunca se usa, así que una vista previa no puede tocar producción.
Su propio nombre de host, sus propios datos
La vista previa responde en <product>-eph-<iid>.<domain>.<journey>.projectairframe.dev, donde <iid> es el número del merge request, detrás del inicio de sesión único para el grupo de usuarios del producto. El enrutador de vistas previas del producto lee el número en el nombre de host y reenvía a los servicios de esa vista previa, que aceptan llamadas solo del enrutador. Por defecto, la base de datos es un sidecar de PostgreSQL en la misma revisión de Cloud Run, con datos iniciales que carga al arrancar desde los archivos del propio producto.
Los revisores prueban el cambio
El ejecutor publica una nota en el merge request con la dirección de la vista previa, su precio y cuándo vence. Los revisores la abren en un navegador, donde las cookies, las redirecciones y los enlaces funcionan como en producción, y cada señal lleva su entorno, que para una vista previa es eph-<iid>, para que los paneles del producto puedan mostrarla por separado: el golden path lo fija en el servicio de la vista previa; la puerta de enlace OTLP lo toma como la etiqueta env, y el agente de la plataforma y la puerta de enlace de registros lo derivan del nombre del servicio. Un nuevo push restablece las aprobaciones, y la siguiente aprobación aplica la misma vista previa con el nuevo commit.
Desaparece en el merge, en el cierre o al vencer su tiempo de vida
Cuando el merge request se integra o se cierra, la compuerta de aprobación inicia la ejecución de destrucción del ejecutor, que verifica por sí misma el estado del merge request, destruye la vista previa y publica una nota. Una vista previa también vence preview_ttl_hours después de su último apply, 72 salvo que la entrada del catálogo diga otra cosa. Un recolector diario destruye las vencidas y las que dejó atrás una notificación perdida o una destrucción que falló.