Pular para conteúdo

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:

  • ECOSIF_ANGULAR_PORT (ou APP_PORT)
  • ECOSIF_ENABLE_RUNTIME=true (aliases legados: ECOSIF_ANGULAR_PRODUCTION, IS_PROD)
  • ECOSIF_ENVIRONMENT, ECOSIF_VERSION, APP_NAME
  • ECOSIF_ANGULAR_AUTH_TOKEN, TOKEN_EXPIRATION
  • ECOSIF_ANGULAR_DEBUG, ECOSIF_ANGULAR_HIDE_ADMIN_MENU, ECOSIF_PAGINATION_SIZE
  • ECOSIF_ENABLE_LOCAL_AUTH, ECOSIF_ENABLE_AZURE_AUTH
  • ECOSIF_ANGULAR_CHECK_AUTH (default true; false desliga health do auth na login)
  • Seis URLs ECOSIF_ANGULAR_API_*_URL ou ECOSIF_API_BASE_URL
  • Se ECOSIF_ENABLE_AZURE_AUTH=true: ECOSIF_AZURE_CLIENT_ID, TENANT_ID, AUTHORITY (sem UUID placeholder)

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.