diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 79f9768..bc97301 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -59,34 +59,35 @@ jobs: # Aguardar 5 segundos para o servidor Nginx iniciar sleep 5 - # ========================================== + # ========================================== # ETAPA 3: DAST - TESTE DINÂMICO (OWASP ZAP) # ========================================== - name: OWASP ZAP Baseline Scan run: | - # Criamos as pastas necessárias no runner mkdir -p qatests - mkdir -p /tmp/zap-share - chmod 777 /tmp/zap-share # LIMPEZA PREVENTIVA docker rm -f zap-scanner || true + docker volume rm zap-reports || true - # Corremos o ZAP com "--user root" para evitar erros de permissão (AccessDenied) + # Criamos um volume Docker gerido pelo motor do Docker para evitar conflitos de pastas + docker volume create zap-reports + + # Corremos o ZAP montando esse volume oficial docker run --user root --name zap-scanner \ --link website-test-sandbox:website-test-sandbox \ - -v /tmp/zap-share:/zap/wrk/:rw \ + -v zap-reports:/zap/wrk/:rw \ -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \ -t http://website-test-sandbox \ -r report.html \ -I || true - # Copiamos o relatório gerado na pasta partilhada para a pasta qatests do runner - cp /tmp/zap-share/report.html qatests/report.html + # O Docker CP consegue extrair o ficheiro diretamente do container para a pasta local do runner! + docker cp zap-scanner:/zap/wrk/report.html qatests/report.html - # Limpamos o container e os ficheiros temporários no final + # Limpamos o container e o volume para não ocupar espaço no servidor docker rm -f zap-scanner || true - rm -rf /tmp/zap-share + docker volume rm zap-reports || true # ========================================== # ETAPA 4: DEPLOY EM PRODUÇÃO (SÓ SE TUDO PASSAR)