Tuesday, June 25, 2019

"Encourager" le lancement des tests avant un push

Sur un projet, nous avions des soucis concernant le nombre de build KO sur Jenkins à cause des tests non lancés sur notre back-end. Après avoir essayé le "on va faire attention", nous avons utilisé le script suivant au pre-push (hook Git).

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

1 comment:

  1. Il est trop bien cet article, j'aimerais bien te rencontrer, peut-être autour d'nu verre ?

    ReplyDelete