PIPELINE DEVOPS
YASSINE NOURI
UVT/ISI 2021
PLAN
Un pipeline DEVOPS, qu'est-ce que c'est ?
Phases du pipeline DEVOPS
Comment créer un pipeline DevOps?
@YNOURI DEVOPS UVT/ISI
10/26/2021
2
“The beginning of wisdom is the definition of terms”
Socrates
@YNOURI DEVOPS UVT/ISI
10/26/2021
3
UN PIPELINE DEVOPS, QU'EST-CE QUE C'EST ?
Un pipeline DevOps est un ensemble de pratiques
que les équipes de développement (Dev) et
d'exploitation (Ops) mettent en œuvre pour créer,
tester et déployer des logiciels plus rapidement et
plus facilement.
L'un des principaux objectifs d'un pipeline est de
maintenir le processus de développement logiciel
organisé et ciblé dans les différent environnement:
dev, test, preprod et prod.
@YNOURI DEVOPS UVT/ISI
10/26/2021
4
PHASES DU PIPELINE
Planifier (Plan) : cette étape permet de définir les spécifications fonctionnelles et opérationnelles suite à des
retours clients ou tout simplement à l’ajout d’une nouvelle fonctionnalité. Il s’agit ensuite de planifier ses sprints.
Développer (Code) : Ensuite, il faut développer la fonctionnalité en utilisant un gestionnaire version pour
faciliter le travail en équipe.
Intégrer/Compiler (Integrate/Build) : Le code est ensuite compilé pour obtenir un fichier exécutable à
déployer sur différents environnements
Tester (Test) : Cette étape est cruciale pour détecter d’éventuels bug ou dysfonctionnement, mais aussi pour
vous assurer que votre application fonctionne correctement face des pics d’activité (connexions simultanées)
Livrer (Release) : lorsque tous les tests sont réalisés et que le logiciel est stable, le logiciel peut être livré.
Déployer (Deploy) : installer le logiciel dans les différents environnements (pré-prod, prod etc.)
Superviser/Monitorer (Operate & Monitor) : Enfin, cette dernière étape permet de s’assurer que le logiciel
et l’infrastructure soient opérationnels quelque soit l’environnement.
@YNOURI DEVOPS UVT/ISI
10/26/2021
5
PHASES DU PIPELINE
Et cela pour assurer la continuité de:
✓ Intégration et Livraison: CI/CD.
✓ Tests: CT.
✓ Déploiement.
✓ Opérations.
✓ Monitoring.
✓ Feedback.
@YNOURI
DEVOPS
UVT/ISI
10/26/2021
6
PHASES DU PIPELINE
@YNOURI DEVOPS UVT/ISI
10/26/2021
7
Advertisement
L'INTÉGRATION CONTINUE: CI
L'intégration continue (CI) est une méthode
d'intégration de petits morceaux de code de
plusieurs développeurs dans un référentiel de code
partagé aussi souvent que possible.
Avec une
stratégie CI, vous pouvez
tester
automatiquement le code pour détecter les erreurs
sans avoir à attendre que les autres membres de
l'équipe contribuent leur code.
@YNOURI DEVOPS UVT/ISI
10/26/2021
8
LA LIVRAISON CONTINUE: CD
C'est un développement évolutif des principes Agile.
La livraison continue (CD) est une extension de CI.
Cela implique d'accélérer le processus de publication
en encourageant les développeurs à publier le code
en production par blocs incrémentiels.
De cette façon, les développeurs peuvent mettre à
fois par jour, offrant
jour
continuellement de la valeur aux utilisateurs.
le produit plusieurs
Ceci est réalisé par un haut niveau d'automatisation
des tests et du déploiement.
@YNOURI DEVOPS UVT/ISI
10/26/2021
9
LE DÉPLOIEMENT CONTINU
Le déploiement
la
continu succède à
livraison
continue, et les mises à jour qui passent avec succès
les tests automatisés sont automatiquement mises en
production. En conséquence,
il permet plusieurs
déploiements de production en une seule journée.
Alors que l'objectif de la livraison continue est de
préparer instantanément votre logiciel pour sa sortie,
le travail réel de le pousser en production est manuel.
le déploiement continu. Et,
C'est
comme mentionné précédemment, si les mises à jour
seront
peuvent
automatiquement via un déploiement continu.
là qu'intervient
déployées,
elles
être
le
Le principal avantage du déploiement continu est la
possibilité de lancer la production en toute sécurité
et rapidement de manière durable.
@YNOURI DEVOPS UVT/ISI
10/26/2021
10
L’EXPLOITATION CONTINUE: CO
Advertisement
Une
stratégie
continue
complète permet de maintenir une disponibilité
maximale des applications et des environnements.
d’opération/exploitation
L'objectif est que les utilisateurs ne soient pas
conscients de la publication constante de mises à
jour de code, de corrections de bogues et de
correctifs.
Une stratégie d'exploitation continue peut aider à
les problèmes de temps d'arrêt et de
éviter
disponibilité lors de la publication du code.
@YNOURI DEVOPS UVT/ISI
10/26/2021
11
LE MONITORING CONTINU: CM
La surveillance continue (CM), également appelée
Continuous Control Monitoring (CCM), est un
processus automatisé qui permet aux équipes
DevOps de détecter les menaces de conformité et
de sécurité dans
leur
infrastructure de développement logiciel.
leur cycle de vie et
Les données
ainsi
recueillies
à partir de la
surveillance des performances et des problèmes
des
être utilisées pour
découvrir les domaines d'amélioration.
applications peuvent
@YNOURI DEVOPS UVT/ISI
10/26/2021
12
LES TESTS CONTINUS: CT
CT permet aux entreprises d'effectuer des tests
chaque étape du processus de
à
automatisés
développement.
Une stratégie CT permet des évaluations rapides des
risques de publication des intégrations de code.
Les
tests
commencent
à
s'exécuter
automatiquement une fois le code intégré.
@YNOURI DEVOPS UVT/ISI
10/26/2021
13
LE FEEDBACK CONTINU:
Une fois le code déployé avec succès, des feedbacks
continus montrent l'impact de la version sur les
utilisateurs finaux.
En automatisant les feedbacks, l'entreprise obtient
des informations et des informations sur la façon
Advertisement
à la nouvelle
dont
version.
les utilisateurs
réagissent
Si des problèmes critiques sont découverts,
les
équipes de développement en seront informées et
pourront immédiatement commencer à travailler
sur les corrections de bogues.
@YNOURI DEVOPS UVT/ISI
10/26/2021
14
COMMENT CRÉER UN PIPELINE DEVOPS?
1
Choisir l’outil CI/CD:
Pour les entreprises qui commencent tout juste à créer un pipeline DevOps, la première chose à faire est de
choisir un outil CI/CD.
Chaque entreprise a des besoins et des exigences différents, donc tous les outils ne seront pas adaptés à toutes
les situations.
Bien qu'il existe de nombreux outils CI/CD disponibles comme CircleCI et GitlabCI, Jenkins est l'un des outils les
plus couramment utilisés. Jenkins propose des centaines de plugins et d'outils fournis par la communauté, il peut
donc être facilement personnalisé pour bien fonctionner pour de nombreuses applications différentes. Gitlab
présente l’avantage de ready-to-use, créer un compte gratuit et l’utiliser pour les petits projets (pour l’usage pro,
faut acheter un forfait).
@YNOURI
DEVOPS
UVT/ISI
10/26/2021
15
COMMENT CRÉER UN PIPELINE DEVOPS?
2
Configurer un environnement de contrôle de source:
Les entreprises travaillant avec de grandes équipes de développement ont besoin d'un endroit dédié pour stocker
et partager le code en constante évolution, éviter les conflits de fusion et créer facilement différentes versions de
l'application ou du logiciel.
Les outils de gestion de contrôle de source tels que Git permettent une collaboration efficace avec les membres
de l'équipe de n'importe où dans le monde, en stockant le code de chaque développeur dans un référentiel
partagé séparé.
GitHub est de loin le site du code-hosting le plus populaire. GitLab et BitBucket sont des alternatives puissantes.
@YNOURI DEVOPS UVT/ISI
10/26/2021
16
COMMENT CRÉER UN PIPELINE DEVOPS?
3
Configurer un serveur de build:
La configuration d'un serveur de build, également appelé serveur d'intégration continue (CI), est une prochaine
étape cruciale avant que votre projet ne puisse suivre le reste du pipeline.
Un serveur de build est un environnement centralisé, stable et fiable pour construire des projets de
développement distribués.
Les serveurs de build récupèrent le code intégré des référentiels de code source, servent de point d'intégration
pour tous les développeurs et fournissent un environnement intact pour s'assurer que le code fonctionne
réellement.
Comme les autres outils mentionnés ci-dessus, les entreprises peuvent choisir parmi de nombreux serveurs de
build, chacun avec des fonctionnalités différentes. Jenkins est l'une des solutions les plus populaires pour créer des
builds. D'autres solutions incluent TeamCity, Travis-CI et go.cd.
@YNOURI DEVOPS UVT/ISI
10/26/2021
17
COMMENT CRÉER UN PIPELINE DEVOPS?
4
Advertisement
Configurer ou créer des outils d'automatisation pour les tests:
Une fois le code configuré sur le serveur de build, il est temps de le tester ! Dans la phase de test, les
le code sans erreur continue dans le
développeurs exécutent des tests automatisés pour s'assurer que seul
pipeline jusqu'à l'étape de déploiement.
Plusieurs tests automatisés sont effectués au stade des tests, notamment des tests unitaires, fonctionnels,
d'intégration et de régression. La plupart des tests sont exécutés via CI et exécutés les uns après les autres.
Pour commencer à exécuter des tests, TestComplete est une bonne option. Il dispose d'un plugin Jenkins qui
vous permet d'exécuter des tests dans un projet Jenkins Pipeline avec des fonctionnalités supplémentaires telles
que le stockage de l'historique des tests et vous permettant de voir les résultats directement à partir de Jenkins.
Plusieurs autres outils sont disponible comme Selenium et JUnit,
@YNOURI DEVOPS UVT/ISI
10/26/2021
18
COMMENT CRÉER UN PIPELINE DEVOPS?
5
Déployer en production:
La dernière étape de votre pipeline est l'étape de déploiement où votre logiciel est prêt à être mis en production.
Le moyen le plus simple de déployer le code consiste à configurer votre serveur de build, tel que Jenkins, pour
exécuter un script pour déployer votre application. Cela peut être configuré pour s'exécuter automatiquement
ou vous pouvez le faire manuellement.
Le déploiement automatique ne doit être utilisé que si vous êtes pleinement convaincu que le mauvais code ne se
retrouvera pas en production. Vous pouvez lier cela à vos builds de test, afin que le script ne s'exécute que si tous
les tests ont été passés.
@YNOURI DEVOPS UVT/ISI
10/26/2021
19
@YNOURI DEVOPS UVT/ISI
10/26/2021
20
EXEMPLE
@YNOURI DEVOPS UVT/ISI
10/26/2021
21
EXEMPLE
1.
2.
Les développeurs push leurs changements/modifications du code dans Github.
Jenkins télécharge le projet dans le workspace.
3. Dans cette étape Jenkins réalisera en parallèle la compilation du projet Maven (génération des *.class) et l’analyse statique du code avec le plugin
CheckStyle en utilisant des agents Docker de Jenkins.
Exécution des Test Unitaire en utilisant JUnit et Mockito.
Exécution des Test d’intégration en utilisant JUnit et Mockito.
4.
5.
6. Dans cette étape on trouve la génération de la documentation et l’exécution en parallèle d’un ensemble des analyses du code en utilisant
7.
8.
9.
SonarQube, PMD et FindBugs.
Stockage des artéfacts dans le repository Nexus.
Provisioning avec Ansible. C’est à dire la préparation de l’environnement afin d’assurer l’installation du jdk et tomcat sur nos serveurs.
9.1. Déploiement de l’artéfact dans le serveur de développement (staging server) qui est un conteneur Docker avec l’OS Ubuntu.
9.2. Déploiement de l’artéfact dans le serveur de production qui est une instance EC2 dans notre cas.
@YNOURI DEVOPS UVT/ISI
10/26/2021
22
THANK YOU