0% ont trouvé ce document utile (0 vote)
22 vues4 pages

CI/CD avec Jenkins, Docker et AWS EC2

Ce document décrit un tutoriel complet pour configurer un pipeline CI/CD utilisant Docker, Jenkins, SonarQube et AWS EC2. Il couvre les prérequis, les étapes d'installation et de configuration, ainsi que l'exécution et la vérification du pipeline. L'objectif est d'automatiser le déploiement d'une application Node.js tout en assurant la qualité du code.

Transféré par

hayathosni01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
22 vues4 pages

CI/CD avec Jenkins, Docker et AWS EC2

Ce document décrit un tutoriel complet pour configurer un pipeline CI/CD utilisant Docker, Jenkins, SonarQube et AWS EC2. Il couvre les prérequis, les étapes d'installation et de configuration, ainsi que l'exécution et la vérification du pipeline. L'objectif est d'automatiser le déploiement d'une application Node.js tout en assurant la qualité du code.

Transféré par

hayathosni01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

D'accord !

Voici un TP complet avec toutes les étapes détaillées, depuis les prérequis
jusqu'à la configuration complète du pipeline CI/CD utilisant Docker, Jenkins, SonarQube,
et AWS.

Prérequis

1. Compte AWS :
o Créez un compte sur AWS.
2. Docker installé sur votre machine locale et sur l'instance EC2 (vous utiliserez Docker
pour lancer Jenkins et SonarQube).
3. Jenkins et SonarQube installés via Docker.
4. Un projet Node.js à utiliser pour les tests CI/CD. Si vous n'avez pas de projet, vous
pouvez en créer un.
5. Un projet GitHub ou un dépôt Git local pour tester le pipeline.
6. AWS CLI installé sur votre machine locale (facultatif, mais utile pour gérer EC2 via
la ligne de commande).

Étape 1 : Préparer l'instance AWS EC2

1. Créer une instance EC2 sur AWS (Ubuntu est recommandé).


o Allez dans la console AWS > EC2 > Launch Instance.
o Choisissez Ubuntu dans la section des systèmes d'exploitation.
o Sélectionnez un type d'instance (t2.micro pour l'option gratuite).
o Configurez la sécurité pour autoriser les ports nécessaires :
 22 (SSH)
 8080 (Jenkins)
 9000 (SonarQube)
o Lancez l'instance et notez l'IP publique de votre instance EC2.
2. Connexion à l'instance EC2 : Utilisez SSH pour vous connecter à l'instance EC2
(assurez-vous que vous avez téléchargé votre clé privée .pem depuis AWS) :
3. ssh -i "your-key.pem" ubuntu@<EC2-PUBLIC-IP>

Étape 2 : Installation de Docker sur EC2

1. Mettre à jour et installer Docker sur l'instance EC2 :


2. sudo apt-get update
3. sudo apt-get install -y docker.io
4. sudo systemctl enable docker
5. sudo systemctl start docker
6. Vérifiez que Docker est installé :
7. sudo docker --version

Étape 3 : Lancer Jenkins et SonarQube avec Docker

1. Lancer Jenkins dans un conteneur Docker :


2. sudo docker run -d -p 8080:8080 -p 50000:50000 --name jenkins
jenkins/jenkins:lts

Jenkins sera accessible à http://<EC2-PUBLIC-IP>:8080.


3. Lancer SonarQube dans un conteneur Docker :
4. sudo docker run -d -p 9000:9000 --name sonarqube sonarqube:lts

SonarQube sera accessible à http://<EC2-PUBLIC-IP>:9000.

Étape 4 : Préparer le projet Node.js pour le pipeline

Si vous n'avez pas de projet Node.js, vous pouvez en créer un.

1. Initialiser un projet Node.js :


2. mkdir my-node-app
3. cd my-node-app
4. npm init -y
5. npm install express
6. Créer un fichier app.js simple :
7. const express = require('express');
8. const app = express();
9. const port = 3000;
10.
11. app.get('/', (req, res) => {
12. res.send('Hello, world!');
13. });
14.
15. app.listen(port, () => {
16. console.log(`App running on port ${port}`);
17. });
18. Ajouter un fichier Dockerfile pour l'application :
19. FROM node:16
20. WORKDIR /usr/src/app
21. COPY package*.json ./
22. RUN npm install
23. COPY . .
24. EXPOSE 3000
25. CMD [ "node", "app.js" ]
26. Construire l'image Docker :
27. sudo docker build -t my-node-app .

Étape 5 : Configurer Jenkins pour CI/CD

1. Accédez à Jenkins via http://<EC2-PUBLIC-IP>:8080.


2. Installer les plugins nécessaires dans Jenkins :
o Docker Pipeline
o SonarQube Scanner
o Git (si vous utilisez GitHub pour le code)
3. Créer un nouveau pipeline dans Jenkins :
o Allez dans New Item > Pipeline.
o Nommez votre pipeline (par exemple, NodeJS-CI-CD).
4. Créer un fichier Jenkinsfile à la racine de votre projet (si vous n'avez pas encore
de projet Git, vous pouvez en créer un sur GitHub et y pousser votre code).

Exemple de fichier Jenkinsfile :


pipeline {
agent any
environment {
SONARQUBE_URL = 'http://<EC2-PUBLIC-IP>:9000'
DOCKER_IMAGE_NAME = 'my-node-app'
}
stages {
stage('Checkout Code') {
steps {
git 'https://github.com/your-repository.git'
}
}

stage('Build and Test') {


steps {
script {
docker.build(DOCKER_IMAGE_NAME)
}
sh 'npm test'
}
}

stage('SonarQube Analysis') {
steps {
script {
withSonarQubeEnv('SonarQube') {
sh 'sonar-scanner'
}
}
}
}

stage('Deploy to Docker') {
steps {
script {
docker.build(DOCKER_IMAGE_NAME).push()
}
sh 'docker run -d -p 3000:3000 ${DOCKER_IMAGE_NAME}'
}
}
}
}

Étape 6 : Configurer SonarQube dans Jenkins

1. Allez dans Manage Jenkins > Configure System.


2. Ajoutez SonarQube Servers et configurez l'URL de SonarQube :
o URL : http://<EC2-PUBLIC-IP>:9000
3. Dans la section SonarQube Scanner, configurez le scanner de SonarQube.

Étape 7 : Exécuter le pipeline Jenkins

1. Poussez votre code sur GitHub (si ce n’est pas déjà fait).
2. Dans Jenkins, lancez le pipeline.
3. Jenkins va exécuter les étapes suivantes :
o Cloner le code depuis le dépôt GitHub.
o Construire et tester l'application.
o Analyser la qualité du code avec SonarQube.
o Déployer l’application dans Docker sur votre instance EC2.

Étape 8 : Vérification

1. Testez l'application :
o Accédez à http://<EC2-PUBLIC-IP>:3000 pour voir si votre application est
déployée avec succès.
2. Vérifiez les logs Jenkins pour confirmer que le pipeline a bien fonctionné, en
particulier la partie SonarQube analysis et le déploiement Docker.
3. Vérifiez SonarQube :
o Allez sur http://<EC2-PUBLIC-IP>:9000 et connectez-vous avec les
informations par défaut.
o Vous devriez voir les résultats de l’analyse de la qualité du code.

Conclusion

Ce TP vous a permis de mettre en place un pipeline CI/CD avec Jenkins, SonarQube, et


Docker, tout en utilisant AWS EC2 pour l'infrastructure. Vous avez configuré le pipeline
pour :

1. Vérifier la qualité du code via SonarQube.


2. Déployer l'application dans un conteneur Docker sur une instance EC2.
3. Automatiser le processus de déploiement via Jenkins.

N'hésitez pas à me poser des questions si vous avez besoin de clarifications supplémentaires !

Vous aimerez peut-être aussi