Feito com Chinaski

Guarda de promoção

Todo build termina com uma verificação de segurança antes de o novo site substituir o antigo: a guarda de promoção compara o build concluído com o último build bom, em contagem de páginas, links quebrados, marcadores de conteúdo não resolvidos e problemas de acessibilidade, e recusa publicar um build que pareça uma regressão. O pior caso que ela permite é saída desatualizada, nunca saída quebrada.

Esta página explica o que ela verifica, como configurá-la e como forçar um build a passar por ela.

O que a guarda verifica

Quatro portões independentes, avaliados por build e resumidos em um relatório:

Verificação O que compara Limite padrão
Queda na contagem de páginas Arquivos no build concluído vs a última promoção boa Mais que uma queda de 80% bloqueia
Links internos quebrados Aumento vs a contagem armazenada no último promote limpo Um aumento de mais de 25
Marcadores de bloco não resolvidos Contagem absoluta de comentários na saída Desligado até você definir o limite (0 significa "nem um")
Problemas de acessibilidade Aumento vs o último promote limpo (imagens sem texto alt, lang ausente, links vazios, múltiplos H1 por página) Um aumento de mais de 10

Por que deltas em vez de absolutos para duas das quatro: contagens absolutas naturalmente escalam com o tamanho do seu site (cada página pode compartilhar um link ou um estilo de imagem), então o que importa é um salto repentino, não um total em regime permanente. Uma linha de base de contagem de páginas que tenha caído também não se aplica mais, builds com falha e bloqueados nunca a definem, e um "promote anyway" também não a reinicia. O ponto de comparação é sempre o último build que a guarda deixou passar limpo, então a guarda não pode ser convencida a tolerar um deslize lento.

Os três modos

Em Settings → Workflow:

  • Warn (padrão), um build que ultrapasse um limite ainda é promovido, mas uma linha de aviso clara é escrita no build log: o que ultrapassou, por quanto e qual era o limite. Melhor enquanto você aprende o que a guarda vê no seu site.
  • Enforce, um build que ultrapasse não é publicado: a cópia de staging é descartada e o site ao vivo anterior continua servindo. O build log registra o resultado como blocked, com a razão e as contagens de qualidade, e o dashboard mostra um banner Promotion Blocked.
  • Off, nenhuma guarda roda. Não recomendado como configuração permanente; use "Warn" em vez disso se a guarda for barulhenta.

Os limites são ajustados para valores sãos ao salvar (a porcentagem de queda 0 a 100; os outros inteiros não negativos). O portão de marcadores não resolvidos começa desligado em sites atualizados para que uma atualização de rotina nunca bloqueie builds de repente por um bug de conteúdo antigo, defina um número (mesmo que 0) para ligá-lo deliberadamente.

Quando um build é bloqueado

  • O painel de status do dashboard muda para Promotion blocked com a razão, e um botão Promote anyway aparece, mas somente nesse estado, e somente para admins.
  • O site construído não é mostrado: tudo no candidato com falha é descartado de forma limpa, e o site ao vivo nunca serve uma promoção pela metade.
  • O histórico de builds mantém a tentativa com falha com o log completo dela e as contagens de qualidade, para que você veja exatamente o que regrediu (uma quebra de página, um template quebrado produzindo ruído de links ausentes, uma massa de páginas não publicadas) antes de decidir.
  • Um build bloqueado é um aviso sobre as suas mudanças, não uma falha no sistema: a causa clássica é publicar um build enquanto um template quebrado ou um rascunho ruim está no ar.

Promote anyway (a válvula de escape)

Se um build está bloqueado e você está confiante de que ele está correto, por exemplo, você deliberadamente excluiu um terço do site, clique em Promote anyway no dashboard (ou, para builds via script, CHINASKI_FORCE_PROMOTE=1 perl builder/build.pl):

  • A guarda é contornada apenas para esse único build; o próximo build normal roda as verificações completas novamente.
  • O bypass não atualiza as linhas de base de qualidade. Isso é deliberado: forçar números ruins para a linha de base tornaria a mesma regressão "normal" e ignorada em builds futuros. O próximo build regular ainda compara com a última promoção limpa, então a regressão permanece visível até ser corrigida.
  • O botão de bypass do dashboard aparece somente enquanto um build está bloqueado; as verificações seguintes permanecem ativas, a válvula de escape é de uso único, e o log registra isso.

Configurando a guarda

Configuração (Settings → Workflow) Campo Efeito
Modo da guarda Warn / Enforce / Off Se ultrapassagens avisam ou bloqueiam
Limite de queda de páginas percentual Quantos arquivos um build pode perder antes de a guarda falar
Aumento de links quebrados inteiro Crescimento máximo vs o último promote limpo
Marcadores de bloco não resolvidos em branco/número Em branco = portão desligado; um número (mesmo que 0) = limite rígido de embeds de bloco ausentes
Aumento de problemas de a11y inteiro Crescimento máximo de problemas de acessibilidade vs o último promote limpo

Os limites são por instância. Se você está vendo avisos frequentes em um site saudável, confira primeiro o relatório de ultrapassagens, a guarda diz exatamente qual portão disparou e por quanto, e cada limite tem um padrão seguro que serve para a maioria dos sites.

Casos de guarda desativada (promove sem comparação)

  • Modo da guarda definido como Off.
  • Um build forçado (válvula de escape acima).
  • O primeiro build após um começo do zero (nada para comparar ainda; o relatório de qualidade ainda é produzido).
  • Deltas de links quebrados e a11y quando nenhuma linha de base anterior existe (primeiro build, ou anteriores aos bancos de dados), esses portões acordam assim que um promote limpo tenha armazenado números de linha de base.

Letras miúdas

  • O portão de "contagem de páginas" conta os arquivos que o build escreveu, o que inclui pequenos arquivos de suporte além das páginas de conteúdo, então builds muito pequenos (sites de três páginas) têm proporcionalmente mais sensibilidade. O padrão de 80% absorve isso.
  • Builds incrementais recebem a mesma guarda que os completos: o staging é uma cópia completa do site de qualquer forma, então as contagens permanecem comparáveis.
  • A guarda nunca muda a saída em si, ela só pode avançar ou descartar a cópia de staging.
Leia este site em