Files
GTI_GERENCIADOR_FISCAL/docs/DEPLOY_HUB.md
T
gtiandClaude Sonnet 5 9f08998800 feat: deterministic cClassTrib resolver + gated CCLASSTRIB auto-apply (default OFF), RTC panel summary; 1.1.9
- resolver (rules RTC-R0..R4/A1..A3/G1..G2) over the official cClassTrib table 2026-06-22 and LC 214/2025 annexes; local vs official catalog comparison
- ONE root-cause RTC blocker per product (missing/unresolved/ambiguous/conflict/official mismatch/catalog outdated/evidence missing)
- auto-apply: C000025.CCLASSTRIB only, three switches (FIREBIRD_WRITES + RTC_AUTO_APPLY_ENABLED + Hub authorization), per-product re-read and re-decision, never overwrites, rowcount 1, audit table rtc_write_audits (migration 0027)
- copy-only write E2E (280/280 applied, only CCLASSTRIB changed, 2nd run 0 writes, stale decision 0 writes); real databases untouched
- docs: cclasstrib_resolution, rtc_auto_apply, unified_fiscal_completeness

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-24 21:18:34 -03:00

2.2 KiB

Deploy do GTI Fiscal Hub

Pré-requisitos

  • Python com paramiko e as dependências dos testes; Git; acesso à rede do 10.0.10.117.
  • Working tree limpa (o script aborta se houver alteração pendente).
  • Para -PublishAgent: instalador dist\installer\GTIFiscalAgent-Setup-<versão>.exe já gerado.

.env.local

Na raiz do repositório (já ignorado pelo Git; nunca commitar):

GTI_SSH_PASSWORD=<senha do usuário administrador>

A variável de ambiente GTI_SSH_PASSWORD, se existir, tem prioridade. A senha nunca é impressa nem gravada em log.

Deploy

powershell -ExecutionPolicy Bypass -File .\scripts\deploy_hub.ps1
powershell -ExecutionPolicy Bypass -File .\scripts\deploy_hub.ps1 -PublishAgent -Version 1.1.9

Parâmetros: -Version (padrão release/VERSION), -PublishAgent, -SkipTests, -DryRun.

Dry-run

powershell -ExecutionPolicy Bypass -File .\scripts\deploy_hub.ps1 -DryRun

Roda as verificações locais, testa o SSH e lista as etapas de produção sem alterá-la.

O que o script faz

backup (Postgres, release storage, .env, árvore anterior em /home/administrador/backups/gti-fiscal-deploy-<data>/; falhou = aborta) → envia git archive HEAD e extrai sobre a árvore (preserva .env e volumes) → rebuild só do fiscal-hub (migrations alembic upgrade head rodam no start) → health/version (container, 127.0.0.1:8000, público) → publica o instalador (imutável: sha256 diferente para a mesma versão é recusado). Log em logs/deploy-*.log.

Rollback

Falha depois de tocar produção: o script restaura a árvore anterior (previous_tree.tgz), reconstrói o Hub e imprime ROLLBACK_REQUIRED=true. O volume do Postgres nunca é removido. Se uma migration já foi aplicada e for preciso voltar o banco: deploy/hub/restore.sh com o dump do diretório de backup.

Troubleshooting

  • GTI_SSH_PASSWORD not found: crie .env.local ou defina a variável.
  • working tree is not clean: commite antes.
  • version mismatch: release/VERSION e central/app/version.py devem coincidir com -Version.
  • refused: ... already published: a versão já existe com outro hash; gere uma nova versão.
  • Permissão negada em backup.sh: a extração perde o bit de execução; o script não depende dele.