- 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>
2.2 KiB
Deploy do GTI Fiscal Hub
Pré-requisitos
- Python com
paramikoe 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: instaladordist\installer\GTIFiscalAgent-Setup-<versão>.exejá 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.localou defina a variável.working tree is not clean: commite antes.version mismatch:release/VERSIONecentral/app/version.pydevem 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.