name: Test Pipeline con Dipendenze on: push: branches: [main, master] jobs: # Job 1: verifica la struttura del progetto verifica-struttura: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Verifica file essenziali Rails run: | echo "Verifica presenza file Rails/Laravel..." # Rails [ -f "Gemfile" ] && echo "✓ Gemfile trovato" || echo "✗ Gemfile mancante" [ -f "Gemfile.lock" ] && echo "✓ Gemfile.lock trovato" || echo "✗ Gemfile.lock mancante (PROBLEMA CI/CD)" # Laravel [ -f "composer.json" ] && echo "✓ composer.json trovato" || echo "✗ composer.json mancante" [ -f "composer.lock" ] && echo "✓ composer.lock trovato" || echo "✗ composer.lock mancante (PROBLEMA CI/CD)" # Docker [ -f "Dockerfile" ] && echo "✓ Dockerfile trovato" || echo "✗ Dockerfile mancante" [ -f ".dockerignore" ] && echo "✓ .dockerignore trovato" || echo "! .dockerignore assente (consigliato)" echo "Verifica completata." # Job 2: verifica sicurezza base — parte DOPO verifica-struttura verifica-sicurezza: runs-on: ubuntu-latest needs: verifica-struttura # DIPENDENZA: parte solo se verifica-struttura è verde steps: - uses: actions/checkout@v4 - name: Cerca pattern di sicurezza rischiosi run: | echo "=== Scan pattern pericolosi ===" echo "" # Cerca hardcoded secrets comuni (ATTENZIONE: è una verifica semplificata) echo "Controllo .env committati..." if find . -name ".env" -not -path "./.git/*" | grep -q .; then echo "ATTENZIONE: trovati file .env nel repository!" find . -name ".env" -not -path "./.git/*" else echo "OK: nessun file .env nel repository" fi echo "" echo "Controllo pattern password in chiaro..." MATCHES=$(grep -r "password\s*=\s*['\"][^'\"]\+['\"]" \ --include="*.rb" --include="*.php" \ --exclude-dir=".git" . 2>/dev/null | grep -v "test\|spec\|example\|placeholder\|CHANGE" || true) if [ -n "$MATCHES" ]; then echo "ATTENZIONE: possibili password hardcoded trovate (verificare manualmente):" echo "$MATCHES" | head -5 else echo "OK: nessun pattern password pericoloso rilevato" fi echo "" echo "Scan completato."