Skip to content

gepetojj/lite-deploy-helper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lite Deploy Helper (ldh)

Daemon em Go para deploy automatizado em VPS Linux via webhook do GitHub.

Instalação rápida

# 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

O que faz

  • 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 -d para substituição com downtime mínimo
  • Faz healthcheck dos containers após deploy
  • Integra com systemd + logs em journalctl
  • CLI ldh para deploy manual e validação de config

Estrutura por projeto na VPS

/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}

Configuração

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 filesystem
  • repo_path: subpasta do repositório dentro de root_path
  • base_path: contexto de build relativo ao repo (suporta monorepo)
  • dockerfile: nome/caminho do Dockerfile relativo ao base_path
  • compose_file: caminho do compose relativo ao root_path
  • image: repositório da imagem Docker
  • webhook_secret: segredo do GitHub para validação de assinatura

CLI

  • Rodar daemon:
    • ldh daemon --config /etc/ldh/config.json
  • Deploy manual:
    • ldh deploy --config /etc/ldh/config.json projeto-a
    • ldh deploy --config /etc/ldh/config.json --commit abc123 projeto-a
  • Validar config:
    • ldh validate-config --config /etc/ldh/config.json

Instalação/Atualização automática

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 (default https://github.com/gepetojj/lite-deploy-helper.git)
  • BRANCH (default main)
  • SRC_DIR (default /opt/ldh-src)
  • CONFIG_PATH (default /etc/ldh/config.json)

systemd

Unit file: systemd/ldh.service

Comandos úteis:

  • sudo systemctl status ldh.service
  • sudo journalctl -u ldh.service -f

Testes

# 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

About

Daemon em Go para deploy automatizado em VPS Linux via webhook do GitHub

Resources

Stars

Watchers

Forks

Contributors

Languages