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ó e PodDisruptionBudget.
  • Desligamento sem perda: preStop de 5 s, terminationGracePeriodSeconds: 40, SIGTERM tratado por start() (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=drop mantém o comportamento antigo; false desliga).
  • Modo de performance por ambiente (min, normal, ultra) → maxPoolSize 4, 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 /api foi acrescentado apenas na URL pública e se o commit é o publicado.