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