jenkins-python.md 3.3 KB

Utiliser Jenkins pour tester son code python

Testé avec Python 3.4

Librairies python:

Librairies requises:

  • nose2 > pip install nose2
  • cov-core > pip install cov-core
  • junit-xml > pip install junit-xml
  • pylint > pip install pylint > si ImportError au lancement de pylint, executer aussi: > pip install wrapt lazy_object_proxy --upgrade

Configurer son projet

Séparer le code des tests

Créer une structure du type:

  • projet
    • projet
    • tests

Les tests et leur couverture avec nose2

nose2 executera les tests de tous les fichiers dont le nom commence par 'test_'

En ligne de commande windows: nose2 --with-coverage --coverage=.\core

La qualité du code

pylint contrôle la qualité du code

En ligne de commande windows: pylint .\core

Installer et configurer Jenkins

Installer jenkins

Executer l'installeur Windows (ici)

Vérifier que le service Jenkins est actif (dans le gestionnaire de taches)

Pour le démarrer, redémarrer, arrêter, ou vérifier son status:

cd c:\Program Files\Jenkins\  
jenkins start  
jenkins restart  
jenkins stop  
jenkins status  

Accéder à l'interface via localhost:8080

Configurer jenkins

Installer les plugins:

  • Cobertura
  • Git Plugin
  • Violations
  • PostBuildScript

Cliquer sur Télécharger et redémarrer ensuite

Dans Configurer Jenkins>Configurer le système

  • Git Plugin: renseigner user.name et user.email
  • Shell: C:\Windows\system32\cmd.exe

Créer le Job

Cliquer sur New Job > Freestyle project > OK

Sur la page de configuration du Job, choisir Git comme SCM, avec le chemin du repo local comme repository path

Add Build Step > Execute windows batch command

Ajouter au champs Command:

set PYTHONPATH=''
nose2 --plugin nose2.plugins.junitxml --junit-xml --with-coverage
python -m coverage xml --include=.\*
pylint -f parseable [nom_du_module]  > pylint.log
exit 0

attention au module pylint: celui-ci doit comprendre un fichier __init__.py'

Puis pour interpréter les résultats:

  • Add Post Build Step > Publish Cobertura Coverage Report

Dans Xml report pattern: coverage.xml

  • Add Post Build Step > Publish JUnit test result report

Dans Test report xmls: nose2-junit.xml

  • Add Post Build Step > Report Violations

Dans pylint: **/pylint.log attention au type de slash

Dans Source Path pattern: **/

  • Add Post Build Step > Execute a set of scripts > Build steps > Executer une commande windows

Insérer la commande:

echo off
setlocal enabledelayedexpansion
cd %JENKINS_HOME%\jobs\%JOB_NAME%\builds\%BUILD_NUMBER%\violations
for /f "delims=" %%l in (violations.xml) do (
    set str=%%l
    set str=!str:\=/!
    echo !str! >> violations.tmp
)
ren violations.xml violations.old
ren violations.tmp violations.xml

Cocher:

  • Execute script only if build succeeds
  • Mark build unstable instead of failed on script error

ce dernier script permet de corriger le fichier violations.xml et de le rendre lisible par Jenkins

Lancer le Job

Cliquer sur Lancer le build

Les résultats de l'éxecution sont accessibles dans Console Output

Depuis l'écran principal, on a accès aux résultats des tests, à leur couverture, ainsi qu'aux violations pylint