name: Deploy Backend (Dev) on: push: branches: - dev paths: - 'backend/**' jobs: # Job 1: Run Backend Tests test-backend: runs-on: docker steps: - name: Checkout code uses: https://github.com/actions/checkout@v4 - name: Setup Go uses: https://github.com/actions/setup-go@v5 with: go-version: '1.24' cache-dependency-path: backend/go.sum - name: Install dependencies run: | cd backend go mod download - name: Run tests run: | cd backend go test -v ./internal/services/... go test -v ./internal/core/usecases/... # Job 2: Deploy (only if tests pass) deploy-backend-dev: runs-on: docker needs: test-backend steps: - name: Executar Deploy via SSH na Apolo (Ambiente Dev) uses: https://github.com/appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} key: ${{ secrets.SSH_KEY }} port: ${{ secrets.PORT || 22 }} script: | # 1. Verifica se o diretório existe, senão cria e faz o clone inicial if [ ! -d "/mnt/data/gohorsejobs" ]; then sudo mkdir -p /mnt/data/gohorsejobs sudo chown $USER:$USER /mnt/data/gohorsejobs git clone https://forgejo-gru.rede5.com.br/rede5/gohorsejobs.git /mnt/data/gohorsejobs fi cd /mnt/data/gohorsejobs # 2. Atualiza o código na branch dev git fetch origin git checkout dev git pull origin dev # 3. Build da imagem com o prefixo localhost/ para evitar erro de short-name resolution podman build -t localhost/gohorsejobs-backend-dev:latest ./backend # 4. Reinicia o serviço via Systemd (Quadlet) sudo systemctl restart gohorsejobs-backend-dev # 5. Limpeza de imagens antigas para economizar espaço na VPS podman image prune -f