fix: add --no-cache and correct API URLs to frontend build
This commit is contained in:
parent
a65259688f
commit
59b1b5ea6a
1 changed files with 47 additions and 10 deletions
|
|
@ -7,9 +7,10 @@ on:
|
||||||
paths:
|
paths:
|
||||||
- 'backend/**'
|
- 'backend/**'
|
||||||
- 'backoffice/**'
|
- 'backoffice/**'
|
||||||
|
- 'frontend/**'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Job 1: Testes do Backend (só roda se houver alteração no /backend)
|
# Job 1: Testes do Backend (Padrão GoHorse)
|
||||||
test-backend:
|
test-backend:
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
if: contains(github.event.head_commit.modified, 'backend/') || contains(github.event.head_commit.added, 'backend/')
|
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/services/...
|
||||||
go test -v ./internal/core/usecases/...
|
go test -v ./internal/core/usecases/...
|
||||||
|
|
||||||
# Job 2: Deploy Inteligente
|
# Job 2: Deploy com Proteção de I/O e RAM
|
||||||
deploy-dev:
|
deploy-dev:
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
# O deploy depende dos testes apenas se houver mudanças no backend
|
|
||||||
needs: [test-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')
|
if: always() && (needs.test-backend.result == 'success' || needs.test-backend.result == 'skipped')
|
||||||
steps:
|
steps:
|
||||||
- name: Executar Deploy via SSH na Apolo
|
- name: Executar Deploy via SSH na Apolo
|
||||||
|
|
@ -54,18 +55,54 @@ jobs:
|
||||||
git checkout dev
|
git checkout dev
|
||||||
git pull origin 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
|
if git diff --name-only HEAD@{1} HEAD | grep -q "^backend/"; then
|
||||||
echo "Detectadas mudanças no Backend. Iniciando Build..."
|
echo "Iniciando Build Backend (CPU: 50%)..."
|
||||||
podman build -t localhost/gohorsejobs-backend-dev:latest ./backend
|
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
|
sudo systemctl restart gohorsejobs-backend-dev
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# DEPLOY DO BACKOFFICE (Se houver alterações)
|
# --- DEPLOY DO BACKOFFICE ---
|
||||||
if git diff --name-only HEAD@{1} HEAD | grep -q "^backoffice/"; then
|
if git diff --name-only HEAD@{1} HEAD | grep -q "^backoffice/"; then
|
||||||
echo "Detectadas mudanças no Backoffice. Iniciando Build..."
|
echo "Iniciando Build Backoffice (CPU: 30%)..."
|
||||||
podman build -t localhost/gohorsejobs-backoffice-dev:latest ./backoffice
|
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
|
sudo systemctl restart gohorsejobs-backoffice-dev
|
||||||
fi
|
fi
|
||||||
|
|
||||||
podman image prune -f
|
# --- 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
|
||||||
Loading…
Reference in a new issue