Aquabudget

Guia de Deploy — Aquabudget

Visão Geral do Pipeline

push main (frontend/**)  →  frontend-deploy.yml  →  GitHub Pages
push/PR qualquer branch (backend/**)  →  backend-ci.yml  →  artefacto JAR
git tag v*.*.*  →  release.yml  →  GitHub Release + JAR

1. Configurar GitHub Secrets

Aceder a: Repositório → Settings → Secrets and variables → Actions → New repository secret

Secret Valor Obrigatório
VITE_API_URL URL pública do backend (ex: https://api.aquabudget.com) Sim
JWT_SECRET String aleatória ≥ 32 caracteres Sim (para CI do backend)

GITHUB_TOKEN é gerado automaticamente pelo GitHub — não é necessário criar.


2. Ativar GitHub Pages

  1. Ir a Repositório → Settings → Pages
  2. Source: Deploy from a branch
  3. Branch: gh-pages Folder: / (root)
  4. Clicar Save

A branch gh-pages é criada automaticamente no primeiro deploy pelo workflow frontend-deploy.yml.

A URL pública será: https://USERNAME.github.io/aquabudget/

Custom Domain (opcional)

  1. Criar ficheiro frontend/public/CNAME com o domínio:
    aquabudget.com
    
  2. Configurar DNS: adicionar registo CNAME apontando para USERNAME.github.io
  3. Em Settings → Pages → Custom domain: inserir o domínio e ativar HTTPS

3. Deploy do Frontend

O deploy é automático — basta fazer push para main com alterações em frontend/:

git push origin main

O workflow executa:

  1. npm ci — instalar dependências
  2. npm run lint — verificar código
  3. npm run build — gerar dist/ com VITE_API_URL do secret
  4. Deploy de dist/ para branch gh-pages

Tempo médio: 2-4 minutos


4. CI do Backend

Automático em qualquer push/PR que toque backend/:

git push origin feature/minha-feature

O workflow executa:

  1. Setup Java 17 (Temurin)
  2. mvn package — compila + testes unitários
  3. Upload do JAR como artefacto (retenção: 7 dias)

5. Criar uma Release

# Garantir que está na main e atualizado
git checkout main
git pull

# Criar e publicar tag
git tag v1.0.0
git push origin v1.0.0

O workflow release.yml executa automaticamente:

  1. Build do JAR (-DskipTests, pois o CI já validou)
  2. Gera release notes com base nos commits desde a tag anterior
  3. Cria GitHub Release com o JAR anexado

6. Rollback

Frontend

# Ver histórico de deploys na branch gh-pages
git log gh-pages --oneline

# Reverter para commit anterior
git checkout gh-pages
git revert HEAD
git push origin gh-pages

Backend


7. Verificar o Deploy

Após deploy do frontend: