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)
- A imagem remove
config.jsoneenv.jsdo artefato de build. - O entrypoint exige variáveis
ECOSIF_*(sem defaults) e falha com mensagem clara. - Gera
config.json+env.jssó a partir do container. - Valida paridade entre os dois ficheiros antes de iniciar o Nginx.
environment.prod.tslê apenaswindow.env(sem fallbacks de build).
Variáveis mínimas no container
Ver variaveis-angular.md. Resumo:
ECOSIF_ANGULAR_PORT(ouAPP_PORT)ECOSIF_ENABLE_RUNTIME=true(aliases legados:ECOSIF_ANGULAR_PRODUCTION,IS_PROD)ECOSIF_ENVIRONMENT,ECOSIF_VERSION,APP_NAMEECOSIF_ANGULAR_AUTH_TOKEN,TOKEN_EXPIRATIONECOSIF_ANGULAR_DEBUG,ECOSIF_ANGULAR_HIDE_ADMIN_MENU,ECOSIF_PAGINATION_SIZEECOSIF_ENABLE_LOCAL_AUTH,ECOSIF_ENABLE_AZURE_AUTH- Seis URLs
ECOSIF_ANGULAR_API_*_URLouECOSIF_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:
- Grava
/var/log/ecosif/container-environment-received.envecontainer-environment.json. - 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. AngularEnableRuntime → ECOSIF_ENABLE_RUNTIME). Placeholders 00000000-... com ECOSIF_ENABLE_AZURE_AUTH=true fazem o entrypoint falhar de propósito.