Cours Git Jenkins
Cours Git Jenkins
Cours Git Jenkins
Présentation
Partie 2: Jenkins
Sommaire
Mise en place du serveur Jenkins
Installation de Jenkins – Configuration Java, Maven - Mise en place de build Maven
Tests et métriques
Les Outils d’analyses disponibles
Mise en place de pipeline
Qu’est-ce qu’un serveur d’intégration continue ?
« L'intégration continue est un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque
modification de code source que le résultat des modifications ne produit pas de régression dans l'application
développée.
Le concept a pour la première fois été mentionné par Grady Booch et se réfère généralement à la pratique de «
Le Serveur l'extreme programming ».
d’intégration Le principal but de cette pratique est de détecter les problèmes d'intégration au plus tôt lors du développement.
continue De plus, elle permet d'automatiser l'exécution des suites de tests et de voir l'évolution du développement du logiciel.
L'intégration continue est de plus en plus utilisée en entreprise afin d'améliorer la qualité du code et du produit final. »
Les principes
Centralisation du code
Le code source doit être partagé par l’équipe des développeurs impliqués sur le projet en utilisant des logiciels de
gestion de version (SVN,CVS,GIT).
d’intégration fournir des métriques (nombre de classes dans le projet, duplication de code, règles qualité, etc.)
Le Serveur
d’intégration
continue
Roadmap des applications agiles
Le Serveur
d’intégration
continue
SCM : Source Control Management
Définition
Système permettant le suivi (dans le temps) des différentes modifications apportées a un ensemble de fichiers
observes.
Précision : indiffèrent au langage utilise et ne se limite pas au code
Le Serveur
d’intégration Plusieurs acronymes
SCM : Source Code Management
continue VCS : Version Control System
RCS : Révision Control System
Utilité
Permettre la traçabilité d'un développement (historique des changements)
Faciliter la collaboration, éviter les conflits ou aider a la leur résolution
Garder une version du code source toujours fonctionnelle, tout en travaillant sur plusieurs
fonctionnalités (notion de branche)
Permettre des schémas organisationnels structurant les développements (workflows)
SCM : Source Control Management
Principaux SCM
CVS (1990) : centralisé, travaille sur des fichiers, limite
SVN (2000) : centralisé, travaille sur des fichiers, workflows limites
Git (2005) : décentralisé, travaille sur des arborescences de contenus
Le Serveur ... et beaucoup d'autres, libres (Mercurial, Bazaar) ou proprietaires (Microsoft, HP, IBM)
d’intégration
continue
SCM : GIT
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, auteur du noyau
Linux, et distribué selon les termes de la licence publique générale GNU version 2. En 2016, il s’agit du logiciel de
gestion de versions le plus populaire.
Principes fondateurs
Chaque client git exécute son propre dépôt en local
Chaque utilisateur d'un dépôt partage possède une copie de tout l'historique des changements enregistres (full
mirroring)
Abandon d'une vision chronologique des changements (pas d'ordre strict entre les commits) pour une vision
Le Serveur structurelle (graphe de commits)
d’intégration But : faciliter les développements parallèles, permettre au code de diverger/converger rapidement
Découpage interne en trois zones
continue le répertoire de travail (working directory) local ou sont réalises les changements
la "staging area" (aussi appelé index) ou sont préenregistres les changements (en attente de commit)
le dépôt git ou sont enregistres les changements
SCM : GIT
Le répertoire de travail est un bac à sable
l'Index (staging area) est un instantané proposé de la prochaine validation
Sert a préparer les commits progressivement
git commit enregistre les modifications indexées
La staging area peut être bypassée : git commit -a
HEAD est l'instantané de la dernière validation (commit), et sera le prochain parent
continue
SCM : GIT
Commande de base
Le Serveur
d’intégration
continue
SCM : GIT
Premières commandes
Le Serveur
d’intégration
continue
SCM : GIT
Partage de version
Le Serveur
d’intégration
continue
SCM : GIT
Fichiers
Le Serveur
d’intégration
continue
SCM : GIT
Consultation des métadonnées
Le Serveur
d’intégration
continue
SCM : GIT
Annuler des modifications
Le Serveur
d’intégration
continue
SCM : GIT
Annuler des modifications
Le Serveur
d’intégration
continue
SCM : GIT
Gestion des branches
Le Serveur
d’intégration
continue
SCM : GIT
Gestion des branches
Le Serveur
d’intégration
continue
Mise en place d’un environnement
Télécharger Ubuntu(système d’exploitation open source basé sur la distribution Linux Debian)
Site : https://www.ubuntu-fr.org/telechargement
LAB 0 Télécharger Virtualbox(logiciel de virtualisation de systèmes d'exploitation) Site :
https://www.virtualbox.org/
Installation de Virtualbox
Création d’une VM et le nommer Lab_Filiere
Installer Ubuntu
TP GIT
Installation de GIT
sudo apt install git
Vérification
LAB 2
TP GITLAB
Présenter les fonctionnalités liées:
Gestion des utilisateurs
Gestions de projets
Gestion de sources
Donner un exemple d’utilisation de chaque fonctionnalité
LAB 2
TP GITLAB
Intégrer le projet wokshop dans GitLab
Créer plusieurs versions du fichier index et utiliser GitLab pour la gestion de source
LAB 2
TP Mise en place d’un serveur d’intégration continue
Installation de la jdk
sudo apt install openjdk-8-jdk
Ajout de la clé au repository
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
Ajout de l'adresse des depôts dans la source.list
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
Mise à jour
LAB 3 sudo apt update
Installation de jenkins
sudo apt install jenkins
Modification TTP_PORT=8182 dans le fichier etc/default/jenkins
TP Mise en place d’un serveur d’intégration continue
Demarrage de jenkins
sudo systemctl start jenkins
Vérification du status de jenkins
sudo systemctl status jenkins
Connectez-vous à l'application jenkins
http://your_server_ip_or_domain:8182
LAB 3
Créer un job Jenkins qui exécute qui réalise un checkout de workshop.git depuis gitlab: