git-subtree-dir: fiscal git-subtree-mainline:d95165fc8fgit-subtree-split:102ba84500
41 lines
2.2 KiB
Markdown
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.2.5
|
|
```
|
|
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.
|