Files
GTI_GERENCIADOR_FISCAL/docs/DEPLOY_HUB.md
T

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

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.