Como um merge request ganha a sua prévia
A mudança é aprovada
O pipeline do próprio merge request executa código que ninguém revisou ainda, então não tem nenhuma credencial da nuvem e não implanta nada. Quando o controle de aprovação aprova o merge request de um produto, ele inicia as execuções do executor para aquele commit exato: os planos, a construção das imagens e a prévia. Um produto cujo status no catálogo é retiring não recebe prévia, já que não serve nada.
O executor a implanta
A execução da prévia espera até 25 minutos pela construção do último commit do merge request, e para se a construção falhou. Depois, com a identidade de aplicação de não produção do produto, ela planeja a raiz infra/eph do produto, passa o pacote de políticas sobre o plano, calcula o preço e o aplica. A identidade de produção nunca é usada, então uma prévia não pode tocar a produção.
Seu próprio nome de host, seus próprios dados
A prévia responde em <product>-eph-<iid>.<domain>.<journey>.projectairframe.dev, onde <iid> é o número do merge request, atrás do login único para o grupo de usuários do produto. O roteador de prévias do produto lê o número no nome de host e encaminha para os serviços daquela prévia, que aceitam chamadas só do roteador. Por padrão, o banco de dados é um sidecar de PostgreSQL na mesma revisão do Cloud Run, com dados iniciais carregados na partida a partir dos arquivos do próprio produto.
Os revisores testam a mudança
O executor publica uma nota no merge request com o endereço da prévia, o seu preço e quando ela expira. Os revisores a abrem num navegador, onde cookies, redirecionamentos e links funcionam como em produção, e cada sinal leva o seu ambiente, que para uma prévia é eph-<iid>, para que os painéis do produto possam mostrá-la à parte: o golden path o define no serviço da prévia; o gateway OTLP o toma como o rótulo env, e o agente da plataforma e o gateway de logs o derivam do nome do serviço. Um novo push zera as aprovações, e a aprovação seguinte aplica a mesma prévia com o novo commit.
Some no merge, no fechamento ou ao fim do seu tempo de vida
Quando o merge request é integrado ou fechado, o controle de aprovação inicia a execução de destruição do executor, que confere por conta própria o estado do merge request, destrói a prévia e publica uma nota. Uma prévia também expira preview_ttl_hours depois do seu último apply, 72 a menos que a entrada do catálogo diga outra coisa. Um coletor diário destrói as expiradas e as que uma notificação perdida ou uma destruição que falhou deixaram para trás.