Publicação e ambientes
Do commit ao ambiente de Dev pelo Workspace e pela Central de Ativações; promoção para HML e Produção, réplicas, domínios personalizados e diagnóstico.
Publicação e promoção são serviços homologados da Plataforma — o App consome o fluxo existente e não o reimplementa. O runtime local não publica nem promove.
Fluxo
commit (código + manifestos + lockfiles + .ooncore)
→ Workspace "Publicar em Dev"
→ workflow publish-dev (oon-publish/request-dev)
→ Central de Ativações autoriza a release
→ delivery: build + validação da imagem
→ deploy em Desenvolvimento
→ homologação → promoção HML → Produção
O scaffold traz a ponte de publicação:
name: publish-dev
on:
workflow_dispatch:
inputs:
oon_workspace_operation: { type: string, required: false }
oon_workspace_generation: { type: string, required: false }
jobs:
request:
permissions:
contents: read
id-token: write
uses: oondemand/oon-publish/.github/workflows/request-dev.yml@main
O workflow valida oon.deploy.json (appCode, schemaVersion), lê as dimensões arquiteturais e capabilities funcionais do central.app.json, autentica-se por OIDC do GitHub e solicita a release à Central. O resultado aparece no resumo do job:
Publicação Dev aceita: release=rel-minha-central-<sha>-<id> etapa=despachada
oon.deploy.json
{
"schemaVersion": "1.0.0",
"appCode": "minha-central",
"runtime": "ooncore-node-react",
"components": { "backend": { "path": "backend" }, "frontend": { "path": "frontend" } },
"resourceProfile": "small",
"capabilities": {},
"health": {
"livePath": "/health/live",
"readyPath": "/api/health/ready",
"versionPath": "/api/health/version"
}
}
Ambientes
| Ambiente | APP_ENVIRONMENT |
Uso |
|---|---|---|
| Desenvolvimento | desenvolvimento |
Validação funcional da jornada |
| Homologação | homologacao |
Aceite técnico e de negócio |
| Produção | producao |
Operação |
Promoção transporta declaração e imagem; segredos (core.secrets) recebem chave independente no destino. Publicação, promoção, rollback e aceite técnico de HML são exclusivos do proprietário com permissão técnica.
Runtime publicado
- Banco de Produção retido: ao promover de novo um App cuja Produção foi excluída, o banco MongoDB retido é reaproveitado; o usuário do banco é recriado com a mesma permissão e senha nova, sem tocar nos dados (0.7.38–0.7.40).
- Réplicas de 1 a 10, rollout com
maxUnavailable: 0/maxSurge: 1, distribuição por nó ePodDisruptionBudget. - Desligamento sem perda:
preStopde 5 s,terminationGracePeriodSeconds: 40,SIGTERMtratado porstart()(para de aceitar conexões, espera requisições, para o worker de e-mail, drena a fila de recálculo e fecha o banco).start({ handleSignals: false })desliga esse tratamento. - Índices no boot: cria os que faltam e informa os não declarados, sem removê-los (
OON_SYNC_INDEXES=dropmantém o comportamento antigo;falsedesliga). - Modo de performance por ambiente (
min,normal,ultra) →maxPoolSize4, 8 ou 16. - Domínios personalizados com certificado HTTP-01 automático.
- Exclusão de dados de licença encerrada há mais de 30 dias, executada pelo runtime com trava entre réplicas.
Diagnóstico pós-publicação
curl --fail-with-body https://SEU-APP-DEV/api/health/ready
curl --fail-with-body https://SEU-APP-DEV/api/health/version
/health/version informa versão do Core, commit, releaseId, data do build e ambiente. Para uma ação privada, reproduza pela página com useOonApi autenticado e registre método, caminho, status, código e correlação — sem segredos.
- HTML 404 indica rota, proxy ou empacotamento — não é rejeição da API externa.
- Readiness não prova execução do handler de domínio.
- Confira se
/apifoi acrescentado apenas na URL pública e se o commit é o publicado.