Вы находитесь на странице: 1из 36

Intégration continue

Présentation

Notation à chaque cours


Envois par mail des TP sous la forme :
Filière_NomPrenom_NumeroTP
Mail : ah.kenore@gmail.com
Partie 1: Le Serveur d’intégration continue
Qu’est-ce qu’un serveur d’intégration continue ?
Les principes
Les outils de gestion sources

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).

Le Serveur Mise à jour régulière du code (commit)


Le « commit » ( = mise à jour du code dans le dépôt, voir point 1) régulier permet de réduire le risque de conflit entre les
d’intégration développeurs.

continue Automatisation de la compilation du code


L’automatisation de la compilation du code source de l’application permet de rendre disponible à tout moment les
livrables d’une version donnée du logiciel.

Automatisation des tests unitaires


Les tests valident que les codes de calcul retournent bien les valeurs attendues. Il suffit d’injecter certaines données en
entrée et de vérifier la conformité du résultat obtenu en sortie.
Les principes
Contrôle automatique de la qualité du code (avec calcul de métriques)
Le contrôle de la qualité permet de :
faire une analyse de la couverture du code,
vérifier que les normes de codage soient bien respectées,
Le Serveur détecter du code « à risque »,

d’intégration fournir des métriques (nombre de classes dans le projet, duplication de code, règles qualité, etc.)

continue Automatisation du déploiement d’une version


Dès qu’une version est disponible, il est possible de déployer une version de manière automatique sur un serveur
de recette ou de production.
Bénéfices apportés
Code centralisé dans un dépôt,
« Industrialisation » des développements (compilation automatique, déploiement automatique),
Amélioration de la cohérence et de la qualité du code,

Le Serveur Détection des erreurs au plus tôt (tests unitaires),


Production de métriques (idéal pour le chef de projet).
d’intégration
continue
Les technologies existantes
Jenkins
CruiseControl / CruiseControl.NET
Apache Continuum
QuickBuild (open-source: LuntBuild)
Le Serveur Et beaucoup d’autres …
d’intégration
continue
Cycle de développement

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

Le Serveur Stockage par snapshots


d’intégration CVS, SVN ne stockent que les deltas des fichiers modifies par un commit
Git stocke tout le contenu du répertoire versionné a chaque commit (mais utilise une compression intelligente
continue basée sur la version antérieure la plus proche)

Types de donnees Git


Blob : contenu d'une version d'un chier (Binary Large Object)
Tree (structure récursive) : arborescence de références vers d'autres Trees et Blobs
Commit (structure récursive) : pointe sur un Tree, sur le Commit parent et contient des métadonnées (date,
auteur,etc.)
Tag : annotation manuelle d'un commit et créant une branche statique (équivalent a un pointeur)
Identifiant unique pour tout objet : hash SHA1 (Secure Hash Algorithm).
SCM : GIT
Bonnes pratiques
Ne pas versionner de fichiers génères automatiquement (logs, pdf, exécutables, etc.) ou personnels
Faire de petits commits reguliers et facile a integrer, leur donner un nom explicite
Utiliser les branches pour :
les développements a plusieurs
chaque développement conséquent d'une nouvelle fonctionnalité
Ne pas développer sur la branche master a plusieurs pour eviter les conflits lors des pull
Le Serveur Faire de petits commits locaux, et pusher des commits plus conséquents, toujours testes et fonctionnels !
d’intégration Faire des pull régulièrement

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 1 Git – version


Paramétrage à la première utilisation de Git
Votre identité
git config --global user.name " votre nom"
git config --global user.email « votre adresse"
Votre éditeur de texte
git config --global core.editor emacs
Vérifier vos paramètres
git config --list
Créer votre répertoire de travail
mkdir workShop
TP GIT
Créer le fichier index.html dont le contenu est :
<!DOCTYPE html> <html> <head> <title>TP GIT</title> </head> <body Initial version </body>
</html>
Lancer git init pour initialiser le dépôt workShop
LAB 1 Lancer git status -s pour obtenir le status.
Lancer git add index.html pour ajouter le fichier (ses modifications) au suivi.
Modifier le fichier index.html pour remplacer Initial version par Seconde version.
Lancer git status (et sa version courte) afin de constater l’état particulier du suivi.
Lancer git commit -m « Initial version » pour valider les modifications au dépot.
Lancer à nouveau git status -s
Lancer git diff pour voir la différence entre le fichier et le dépôt
Lancer git add index.html pour ajouter les nouvelles modifications au suivi.
Lancer git status -s
Lancer git reset pour annuler le suivi des nouvelles modifications
Lancer git status -s
Lancer git diff pour vérifier que l’état du fichier n’a pas changé
TP GIT
Créez une branche test :
git branch test
git branch.

LAB 1 Passez sur la branche test :


git checkout test
Créez un commit qui rajoute un nouveau fichier
Intégrer la branche test dans la branche master
git checkout master
git merge test
git lola
Supprimer la branch
git branch -d test
TP GITLAB
GitLab vous permet de profiter du système GIT et de l’efficacité de l’interface à la GitHub le tout sur vos serveurs.
Voici les fonctionnalités principales de GitLab :
Interface web permettant d’observer le code
Système de ticketing
Création d’utilisateurs et de groupes
Création d’article (wiki)

LAB 2 Possibilité de laisser des commentaires sur des commits


Installation de GIT
Script permettant d'ajouter gitlab comme source de paquets.
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt update
installation de gitlab ce
sudo apt-get install gitlab-ce
Paramétrage
sudo nano /etc/gitlab/gitlab.rb
Modifier le paramètre external_url 'http://localhost‘
Lancer le service de configuration de Gitlab
sudo gitlab-ctl reconfigure
Une fois la configuration chargée il ne reste plus qu’à se connecter sur le Gitlab fraîchement installé
TP GITLAB
Une fois connecté voici la page qui sera présentée. Elle permet de créer de nouveaux projets et donc de les
héberger sur la plate-forme nouvellement crée

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 Récupère le mot de passe de l'admin


sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Installer tous les plug ins
TP Création d’un job
Création d'un script dans le repertoire
cd /tmp
mkdir scriptsJenkins
cd scriptsJenkins
touch script.sh
Nano script.sh

LAB 3 Ajout ce script


#!/bin/bash
echo "hello, today is $(date)" > /tmp/jenkins_test
Attribution des droits
chmod 777 /tmp/jenkins_test
Rendre exécutable
chmod u+x script.sh
Tester le scripts
./script.sh
Vérifier que la generation du fichier
cat /tmp/jenkins_test
TP Création d’un job
Créer un job Jenkins qui exécute le script:

LAB 3
Créer un job Jenkins qui exécute qui réalise un checkout de workshop.git depuis gitlab:

Вам также может понравиться