Il se base sur la présence du fichier jacoco-tests.exec (pour SONAR) qui est généré lors du clean install. On vérifie que le fichier est présent et que sa dernière date de modification est inférieure à 20 minutes (pour ceux qui lançait bien le clean install avant de push, il n'y aura pas de changement dans leurs habitudes)
Pas la meilleure solution donc, but it works.
#!/bin/bash # FilePaths to testing files generated by clean install testsFile=./target/jacoco-tests.exec run_clean_install () { echo "Running Maven clean install before push" mvn clean install if [ $? -ne 0 ]; then "Error while testing the code, cleaning project" rm "$testsFile" exit 1 fi } if [ ! -f "$testsFile" ]; then echo "File $testsFile not found!" run_clean_install else epochTwentyMinutes=1200 currentEpoch=`/bin/date +%s` testsFileEpoch=`/bin/date -r "$testsFile" +%s` timePassedTestsFileEpoch=`expr $currentEpoch - $testsFileEpoch` if test "$timePassedTestsFileEpoch" -gt "$epochTwentyMinutes"; then echo "Obsoletes tests" run_clean_install fi fi rm "$testsFile" echo "Pre-push hook passed"
Script à placer dans /repertoire_projet/.git/hooks/pre-push
Il est trop bien cet article, j'aimerais bien te rencontrer, peut-être autour d'nu verre ?
ReplyDelete