Validação de CI para os stacks de bootstrap
TLDR: Adicionar uma checagem estática de
fmt/validatesobresrc/bootstrap/**ao workflow de PR, para que mudança de bootstrap seja pega antes do merge — sem precisar de credencial, state ou apply.
Contexto
src/bootstrap/** está fora de todo filtro de path em infra-pr.yml e infra.yml, então mudança de bootstrap não recebe CI nenhum: nem fmt, nem validate, nem plan. Isso apareceu durante o trabalho de cluster autoscaler — a edição na TerraformPolicy (src/bootstrap/aws-account/terraform/main.tf) foi mergeada com apenas validação local.
Isso é em parte proposital: o apply do bootstrap tem que continuar manual e local. Ele usa backend local (tmp/aws-account.tfstate), assume a OrganizationAccountAccessRole de nível de organização, é interativo, e é justamente o passo que cria a TerraformRole da qual todo o resto do CI depende. Rodar o apply no CI seria circular e um risco de segurança.
Mas validação estática (fmt -check, validate -backend=false) não precisa de credencial, state nem apply — só pega erro de sintaxe e formatação antes do merge. É esse o gap.
Objetivos
terraform fmt -check+terraform validatenos stacks de bootstrap em tempo de PR.- Sem credencial, sem remote state, sem apply — puramente estático.
Fora de escopo
- Não adicionar um job de apply do bootstrap. O apply continua manual e local, por decisão de arquitetura.
Mudanças
.github/workflows/infra-pr.yml
src/bootstrap/**adicionado ao triggeron.pull_request.paths.- Output e filtro
bootstrapno jobchanges. - Job novo
bootstrap / validate, condicionado achanges.outputs.bootstrap == 'true':hashicorp/setup-terraform@v3terraform fmt -check -recursive src/bootstrapterraform init -backend=false+terraform validatepor stack de bootstrap (hoje sósrc/bootstrap/aws-account/terraform)- sem ward e sem credencial AWS — a validação é offline.
Como verificar
- Um PR que toca
src/bootstrap/aws-account/terraform/main.tfroda o jobbootstrap / validatee passa no código atual. - Introduzir erro deliberado de formatação ou sintaxe faz o job falhar.
- PR que não toca
src/bootstrap/**tem o job pulado pelo filtro.
Documentação
— (nenhuma; a mudança é só de CI, sem regra de negócio)