Daemon em Go para deploy automatizado em VPS Linux via webhook do GitHub.
# Nova instalação
curl -sL https://raw.githubusercontent.com/gepetojj/lite-deploy-helper/main/scripts/install.sh | sudo bash -s install
# Atualização
curl -sL https://raw.githubusercontent.com/gepetojj/lite-deploy-helper/main/scripts/install.sh | sudo bash -s update
# Reinstalação
curl -sL https://raw.githubusercontent.com/gepetojj/lite-deploy-helper/main/scripts/install.sh | sudo bash -s reinstall- Endpoint unificado de webhook:
POST /webhook/github - Mapeia repositório GitHub para projeto via config JSON global
- Enfileira deploys para processar um build por vez (protege recursos da VPS)
- Builda imagem Docker com tags:
latest- hash curto do commit
- Executa
docker compose up -dpara substituição com downtime mínimo - Faz healthcheck dos containers após deploy
- Integra com
systemd+ logs emjournalctl - CLI
ldhpara deploy manual e validação de config
/srv/ldh/
projeto-a/
docker-compose.yaml
projeto-a/ # git clone do repositório
No docker-compose.yaml, use a imagem com tag vinda de variável:
services:
app:
image: org/projeto-a:${LDH_IMAGE_TAG:-latest}Arquivo global padrão: /etc/ldh/config.json
Exemplo: examples/config.json
Campos principais por projeto:
github_repository: ex.org/projeto-a(identificador usado no webhook)root_path: pasta raiz do projeto no filesystemrepo_path: subpasta do repositório dentro deroot_pathbase_path: contexto de build relativo ao repo (suporta monorepo)dockerfile: nome/caminho do Dockerfile relativo aobase_pathcompose_file: caminho do compose relativo aoroot_pathimage: repositório da imagem Dockerwebhook_secret: segredo do GitHub para validação de assinatura
- Rodar daemon:
ldh daemon --config /etc/ldh/config.json
- Deploy manual:
ldh deploy --config /etc/ldh/config.json projeto-aldh deploy --config /etc/ldh/config.json --commit abc123 projeto-a
- Validar config:
ldh validate-config --config /etc/ldh/config.json
A forma mais simples é via curl (ver Instalação rápida acima).
Com o repositório já clonado localmente:
- Nova instalação:
sudo ./scripts/install.sh install - Atualização:
sudo ./scripts/install.sh update - Reinstalação:
sudo ./scripts/install.sh reinstall
Variáveis opcionais:
REPO_URL(defaulthttps://github.com/gepetojj/lite-deploy-helper.git)BRANCH(defaultmain)SRC_DIR(default/opt/ldh-src)CONFIG_PATH(default/etc/ldh/config.json)
Unit file: systemd/ldh.service
Comandos úteis:
sudo systemctl status ldh.servicesudo journalctl -u ldh.service -f
# Testes unitários (rápidos)
go test ./...
# Testes de integração (CLI)
go test ./integration/... -tags=integration
# Todos os testes
go test ./... && go test ./integration/... -tags=integration