gwift-book/source/cicd/jenkins.adoc

2.4 KiB
Raw Blame History

Intégration continue avec Jenkins

Le but de lintégration est continue est de nous permettre de tester automatiquement notre développement chaque fois que le code est mis à jour et ainsi éviter les régressions.

Ceci nécessite de mettre à jour régulièrement les tests et dutiliser un serveur dintégration. Dans notre cas, nous allons utiliser jenkins.

Nous considérons aussi que le code est hébergé sur Gitlab.

Installation de Jenkins

Jenkins fournit des paquets dinstallation pour presque tous les systèmes dexploitation sur leur site: `https://jenkins-ci.org/ <https://jenkins-ci.org/>`_.

Par exemple, dans le cas de debian, il suffit de suivre les instructions sur `http://pkg.jenkins-ci.org/debian/ <http://pkg.jenkins-ci.org/debian/>`_

Comme nous utilisons git, il faut veiller à activer le plugin correspondant: `Git plugin <https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin>`_. Ce dernier peut directement être installé depuis le panneau de gestion des plugins de jenkins.

Création dun projet

Depuis la page principale de jenkins, on crée un nouveau projet en cliquant sur Nouveau Item et on donne un nom à notre nouveau projet:

  1. image:: integration/jenkins_new_project.png :align: center

Ensuite, on spécifie que le projet provient de git:

  1. image:: integration/jenkins_git.png :align: center

Finalement, on écrit le petit script permettant de lancer le build:

  1. image:: integration/jenkins_build_script.png :align: center

Et on sauve le tout.

Lien gitlab - jenkins

Pour que le build du projet que nous avons créé dans jenkins soit exécuté automatiquement, il est nécessaire dautoriser le lancement du build via une url sur jenkins, cette dernière étant appelée depuis gitlab.

Dans jenkins, on se rend dans les propriétés du projet et on active le déclanchement du build à distance:

  1. image:: integration/jenkins_build_with_url.png :align: center

Attention à générer un jeton dauthentification suffisamment aléatoire pour éviter que nimporte qui ne lance le build. Par exemple avec uuid en python:

  1. code-block:: python

    >>> import uuid
    >>> uuid.uuid4()
    UUID('097e547c-08b4-4d4f-a8e8-2a1cf03b8463')
    >>>

Ensuite, on crée un web hook dans gitlab:

  1. image:: integration/gitlab_web_hook.png :align: center

Voilà, à chaque push sur gitlab, jenkins lancera le build du projet et exécutera les tests associés.