Configuração runtime — troubleshooting

Por que o cliente via só “versão do GitHub Action”?

Havia três camadas competindo; a que “ganhava” dependia do deploy:

Camada Problema
src/assets/config/config.json no build Copiado para dist/ com URLs localhost e Azure de dev. Se o entrypoint não rodasse ou falhasse, o browser servia esse ficheiro.
environment.prod.ts (build CI) process.env e fallbacks hardcoded eram embutidos no JS no ng build. O GitHub Action normalmente não passa ECOSIF_* → o bundle ficava com valores fixos do repositório.
docker-entrypoint.sh (antigo) Defaults (/ecosif-auth/, 0.0.00.202605271, Azure 00000000-...) mascaravam variáveis ausentes na task ECS.

A versão às vezes aparecia “certa” porque ECOSIF_VERSION tinha default no entrypoint ou vinha do package.json no label da imagem, enquanto APIs/Azure vinham do config.json antigo ou do bundle.

Comportamento atual (após correção)

  1. A imagem remove config.json e env.js do artefato de build.
  2. O entrypoint exige variáveis ECOSIF_* (sem defaults) e falha com mensagem clara.
  3. Gera config.json + env.js só a partir do container.
  4. Valida paridade entre os dois ficheiros antes de iniciar o Nginx.
  5. environment.prod.tsapenas window.env (sem fallbacks de build).

Variáveis mínimas no container

Ver variaveis-angular.md. Resumo:

Como validar no contentor

docker run --rm -e ECOSIF_ANGULAR_PORT=8080 ... disoft/ecosif-angular:TAG
# Deve falhar com lista de variáveis ausentes

docker exec <container> cat /usr/share/nginx/html/assets/config/config.json
docker exec <container> cat /usr/share/nginx/html/assets/env.js

Diagnóstico em CloudWatch / Datadog (ECOSIF_STORE_VARIABLES=true)

Com ECOSIF_STORE_VARIABLES=true (alias STORE_VARIABLES), no arranque o entrypoint:

  1. Grava /var/log/ecosif/container-environment-received.env e container-environment.json.
  2. Emite o conteúdo no stdout entre marcadores [ECOSIF_ENV_DIAG] BEGIN/END (visível no log group ECS e no Datadog se coletar logs do contentor).

Filtro útil no CloudWatch Logs Insights:

fields @timestamp, @message
| filter @message like /ECOSIF_ENV_DIAG/

Valores de *AUTH_TOKEN*, *SECRET*, *PASSWORD* aparecem como ***redacted*** no JSON.

CloudFormation

A task ECS Angular deve incluir todas as variáveis acima (parâmetros Angular* em ecosif-backend.yaml, incl. AngularEnableRuntimeECOSIF_ENABLE_RUNTIME). Placeholders 00000000-... com ECOSIF_ENABLE_AZURE_AUTH=true fazem o entrypoint falhar de propósito.