From 59b1b5ea6a5791c75516ebb8a8ea78efa3634047 Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Sun, 28 Dec 2025 16:07:51 -0300 Subject: [PATCH] fix: add --no-cache and correct API URLs to frontend build --- .forgejo/workflows/deploy.yaml | 57 ++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml index 77ea3a5..3a1c2cf 100644 --- a/.forgejo/workflows/deploy.yaml +++ b/.forgejo/workflows/deploy.yaml @@ -7,9 +7,10 @@ on: paths: - 'backend/**' - 'backoffice/**' + - 'frontend/**' jobs: - # Job 1: Testes do Backend (só roda se houver alteração no /backend) + # Job 1: Testes do Backend (Padrão GoHorse) test-backend: runs-on: docker if: contains(github.event.head_commit.modified, 'backend/') || contains(github.event.head_commit.added, 'backend/') @@ -34,11 +35,11 @@ jobs: go test -v ./internal/services/... go test -v ./internal/core/usecases/... - # Job 2: Deploy Inteligente + # Job 2: Deploy com Proteção de I/O e RAM deploy-dev: runs-on: docker - # O deploy depende dos testes apenas se houver mudanças no backend needs: [test-backend] + # Executa se o teste passar OU se o teste foi pulado (mudança só no front/backoffice) if: always() && (needs.test-backend.result == 'success' || needs.test-backend.result == 'skipped') steps: - name: Executar Deploy via SSH na Apolo @@ -54,18 +55,54 @@ jobs: git checkout dev git pull origin dev - # DEPLOY DO BACKEND (Se houver alterações) + # --- PREPARAÇÃO DO AMBIENTE --- + # 1. Cria diretório temporário na RAM para evitar escritas no SSD (vda3) + mkdir -p /tmp/podman-build + export TMPDIR=/tmp/podman-build + + # 2. Força o kernel a liberar cache e finalizar escritas pendentes para baixar o Load + sync; echo 3 | sudo tee /proc/sys/vm/drop_caches + + # --- DEPLOY DO BACKEND --- if git diff --name-only HEAD@{1} HEAD | grep -q "^backend/"; then - echo "Detectadas mudanças no Backend. Iniciando Build..." - podman build -t localhost/gohorsejobs-backend-dev:latest ./backend + echo "Iniciando Build Backend (CPU: 50%)..." + nice -n 19 ionice -c 3 podman build \ + --cpu-quota 50000 \ + --memory 1024m \ + -t localhost/gohorsejobs-backend-dev:latest ./backend sudo systemctl restart gohorsejobs-backend-dev fi - # DEPLOY DO BACKOFFICE (Se houver alterações) + # --- DEPLOY DO BACKOFFICE --- if git diff --name-only HEAD@{1} HEAD | grep -q "^backoffice/"; then - echo "Detectadas mudanças no Backoffice. Iniciando Build..." - podman build -t localhost/gohorsejobs-backoffice-dev:latest ./backoffice + echo "Iniciando Build Backoffice (CPU: 30%)..." + nice -n 19 ionice -c 3 podman build \ + --cpu-quota 30000 \ + --memory 2048m \ + -t localhost/gohorsejobs-backoffice-dev:latest ./backoffice sudo systemctl restart gohorsejobs-backoffice-dev fi - podman image prune -f \ No newline at end of file + # --- DEPLOY DO FRONTEND (Foco em sobrevivência do disco) --- + if git diff --name-only HEAD@{1} HEAD | grep -q "^frontend/"; then + echo "Iniciando Build Frontend (CPU: 20%, RAM: 3G)..." + # ionice -c 3 garante que o build não roube I/O do banco de dados + # NODE_OPTIONS aumenta a RAM disponível para o build não dar swap + # --no-cache garante que o Next.js rebuild com os novos valores de env + nice -n 19 ionice -c 3 podman build \ + --cpu-quota 20000 \ + --memory 3072m \ + --no-cache \ + --build-arg NODE_OPTIONS="--max-old-space-size=2048" \ + --build-arg NEXT_PUBLIC_API_URL="${{ secrets.API_URL || 'http://backend:8080' }}" \ + --build-arg NEXT_PUBLIC_BACKOFFICE_URL="${{ secrets.BACKOFFICE_URL || 'http://backoffice:3001' }}" \ + -t localhost/gohorsejobs-frontend-dev:latest ./frontend + sudo systemctl restart gohorsejobs-frontend-dev + fi + + # --- LIMPEZA FINAL --- + echo "Limpando caches e sincronizando disco..." + rm -rf /tmp/podman-build/* + podman image prune -f + podman builder prune -f + sync \ No newline at end of file