Explorar el Código

mise en place

olivier.massot hace 8 años
commit
8954506ff7
Se han modificado 4 ficheros con 199 adiciones y 0 borrados
  1. 57 0
      Gitlab/gitlab-ci.md
  2. 141 0
      Jenkins/jenkins-python.md
  3. 1 0
      README.md
  4. BIN
      logo.png

+ 57 - 0
Gitlab/gitlab-ci.md

@@ -0,0 +1,57 @@
+# Mettre en place l'intégration continue dans un projet Gitlab
+
+### 1- Ajouter un fichier `.gitlab-ci.yml` au projet
+
+La version la plus simple possible pour python, qui executera les tests unitaires et retournera leurs résultats et leur couverture:
+
+    test:
+      script:
+        - nose2
+        
+* `test`: nom du job (il peut y en avoir plusieurs)
+* `script`: seule option requise pour exécuter le job
+* `nose2`: commande à exécuter pour lancer les tests ([nose2](https://github.com/nose-devs/nose2) est un outil de tests pour python)
+        
+[Plus d'infos sur la réation du .gitlab-ci.yml](http://docs.gitlab.com/ce/ci/quick_start/README.html)
+
+### 2- Installer un Runner
+
+Il faut ensuite installer un runner sur la machine qui exécutera les tests
+> Un runner peut être partagé (admin requis), ou spécifique à un projet.
+> Il est apparemment déconseillé d'installer le runner sur la machine où tourne Gitlab
+
+[Plus d'infos sur l'installation de runners](https://docs.gitlab.com/runner/install/)
+
+### 3- Enregistrer le runner
+
+On utilise ensuite la commande `register` du runner pour le brancher au serveur gitlab.  
+Les infos requises pour l'enregistrement se trouvent dans le menu `settings` du projet (`CI Pipelines` > `Runners`)  
+
+La méthode la plus simple consiste à lui donner l'executeur `shell`. 
+Les commandes listées dans le fichier .gitlab-ci.yml seront executées, et les tests seront considérés 
+comme réussis si chaque ligne retourne un code `exit 0`.
+
+### 4- Utiliser Docker
+
+L'idéal est d'utiliser Docker pour importer une image Docker. Le fichier .gitlab-ci.yml ressemblera alors à:
+
+    # Official framework image. Look for the different tagged releases at:
+    # https://hub.docker.com/r/library/python
+    image: python:3.6
+    #image: python:latest
+    
+    before_script:
+      - python -V    # Affiche la version de python
+      - pip install cov-core  # Installe les librairies nécessaires
+      - pip install nose2
+      - pip install coveralls
+    
+    # This folder is cached between builds
+    cache:   
+      paths:   
+      - ~/.cache/pip/
+    
+    test:
+      script:
+      - nose2
+      

+ 141 - 0
Jenkins/jenkins-python.md

@@ -0,0 +1,141 @@
+# 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](https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service))
+
+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

+ 1 - 0
README.md

@@ -0,0 +1 @@
+Documents et snippets relatifs à la mise en place de l'intégration continue

BIN
logo.png