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