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

41 lines
2.2 KiB
Markdown

# 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.