GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer un pipeline CI/CD simple à l'aide de Github et Jenkins sur une instance AWS EC2 Linux

Dans cet article, nous verrons les étapes pour mettre en œuvre un pipeline CI/CD simple à l'aide de Jenkins. Nous utiliserons un exemple de code Java et nous déploierons ce code sur le serveur Web Apache Tomcat en tant que fichier .war. Nous utiliserons Maven comme outil de construction. Vous pouvez trouver l'exemple de code Java sur mon référentiel Github (dépôt). Avant de continuer, comprenons les principes de base des outils et des technologies que nous utiliserons pour configurer le pipeline CI/CD.

  1. Instance EC2 : L'instance EC2 est une machine virtuelle (VM) dans le cloud AWS. Nous allons déployer Apache Tomcat et Jenkins sur une instance EC2.
  2. Apache Tomcat : Apache Tomcat est un serveur Web open source. Nous allons déployer notre exemple d'application Java dans Apache Tomcat en tant que fichier .war.
  3. Github : Github est une plateforme d'hébergement de code. Il s'agit essentiellement d'un système de gestion de contrôle de version/source. Nous aurons notre exemple de code Java sur Github.
  4. Webhook Github : Github Webhook est utilisé pour créer et configurer des intégrations. Nous allons créer un webhook qui déclenchera une tâche Jenkins chaque fois qu'un nouveau commit aura lieu sur le dépôt Github.
  5. Jenkins : Jenkins est un outil d'automatisation open source gratuit. Nous allons écrire un travail sur Jenkins qui va créer et déployer un fichier .war de l'exemple de code d'application Java sur le serveur Apache Tomcat.
  6. Maven  : Maven est un outil d'automatisation de la création utilisé principalement pour créer des projets Java.

Prérequis

  1. Compte AWS (créez-le si vous n'en avez pas)
  2. Compréhension de base de Github.
  3. Compréhension de base de Jenkins.
  4. Compréhension de base du serveur et des commandes Linux

Qu'allons-nous faire ?

  1. Créer une instance EC2
  2. Installer Java
  3. Installer Jenkins
  4. Configurer Apache Tomcat
  5. Fork mon dépôt Github
  6. Accéder et configurer Jenkins
  7. Configurer une tâche Jenkins pour le déploiement .war
  8. Configurer le Webhook sur le référentiel Github
  9. Tester la compilation automatique à chaque validation

Créer une VM ou une instance EC2

Pour créer une instance EC2, vous pouvez vous référer au document disponible ici.

Ici, j'ai créé une nouvelle instance EC2 sur mon compte AWS. Cette instance contient le système d'exploitation Ubuntu 18.

Vous pouvez voir que l'instance est opérationnel. J'utiliserai cette instance pour installer Java ou les dépendances ainsi qu'Apache Tomcat et Jenkins.

Installer Java

Pour installer Java sur votre système Ubuntu 18, vous pouvez utiliser les commandes suivantes. La commande suivante installera Java 8. Une fois installé, vous pourrez même vérifier sa version.

sudo apt-get update
sudo apt install openjdk-8-jdk
java -version

Installer Jenkins

Utilisez les commandes suivantes pour installer Jenkins sur votre instance.

sudo apt-get update
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/> /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Une fois que vous avez installé Jenkins, utilisez la commande suivante pour le démarrer et vérifier son état.


sudo systemctl start jenkins #Start Jenkins
service jenkins status #Check Jenkins Status

Dans la capture d'écran suivante, vous pouvez voir que le service Jenkins a été démarré. Ce service Jenkins a démarré sur le port 8080.

Configurer Apache Tomcat

Installer Apache Tomcat

Avant de télécharger et d'installer Apache Tomcat, créons un répertoire dans lequel nous pouvons télécharger le package Apache Tomcat.

Utilisez les commandes suivantes pour créer un répertoire dans /opt

cd /opt/
sudo mkdir Innovecture

Modifiez le propriétaire du répertoire à l'aide de la commande suivante. Nous changeons la propriété de l'utilisateur Ubuntu et du groupe Ubuntu afin que l'utilisateur Ubuntu puisse démarrer le service Apache Tomcat et nous n'avons pas besoin d'utiliser les privilèges root ou user ou sudo.


sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture/

Téléchargez et extrayez Apache Tomcat à l'aide des commandes suivantes. Si vous souhaitez utiliser une autre version d'Apache Tomcat, vous pouvez la télécharger et l'extraire.


wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
tar -zxvf apache-tomcat-9.0 .31.tar.gz 
cd apache-tomcat-9.0.31/

Effectuez les configurations requises dans Apache Tomcat à l'aide de la commande suivante. Reportez-vous aux captures d'écran suivantes pour les configurations à effectuer. Dans les configurations suivantes, nous attribuons un utilisateur et un mot de passe qui peuvent être utilisés pour se connecter à l'application de gestion d'Apache Tomcat. Notez ce nom d'utilisateur et ce mot de passe car nous aurons besoin de ces informations d'identification plus tard.

Configurer Apache Tomcat

vim conf/tomcat-users.xml

Reportez-vous à la capture d'écran suivante et assurez-vous que votre context.xml a la même configuration.

vim webapps/manager/META-INF/context.xml

Dans le fichier server.xml sous le répertoire conf, modifiez le port sur lequel s'exécute Apache Tomcat, c'est-à-dire changez le port 8080 en 8090 car notre service Jenkins est déjà exécuté sur le port 8080.

vim conf/server.xml

Modifiez également la configuration de l'hôte local dans le fichier server.xml avec l'adresse IP du serveur afin que votre serveur soit accessible depuis Internet.

Démarrer Apache Tomcat

Utilisez la commande suivante pour démarrer le service Apache Tomcat.

bin/startup.sh

Dans la capture d'écran suivante, vous pouvez voir que le service Apache Tomcat est en cours d'exécution sur le port 8090 et sur le port 8080, le service Jenkins est en cours d'exécution. Pour vérifier votre système, utilisez la commande suivante.

netstat -tulpn 

Connectez-vous à l'application Tomcat Manager

Pour voir si nous pouvons nous connecter à l'application de gestion d'Apache Tomcat en utilisant les informations d'identification que nous avons spécifiées précédemment, cliquez sur l'URL d'Apache Tomcat http://IP-of -Apache-Tomcat :8090/gestionnaire. Un écran d'informations d'identification vous sera demandé. Entrez simplement le nom d'utilisateur "tomcat-manager" et le mot de passe que nous avons configurés dans conf/tomcat-users.xml.

Une fois que vous vous êtes connecté avec succès, vous verrez l'écran comme suit

Repo fork Github

Vous pouvez bifurquer ou cloner mon référentiel mentionné ci-dessous. Ce référentiel contient l'exemple de code Java, vous pouvez soit utiliser ce code, soit utiliser votre propre référentiel, vous pouvez également l'utiliser.

URL du référentiel : https://github.com/shivalkarrahul/Innovecture.git

Accéder et configurer Jenkins 

Pour accéder à Jenkins, cliquez sur l'URL http://IP-of-Jenkins:8080.

Suivez les écrans que vous obtenez pour déverrouiller Jenkin et installer les plugins suggérés

Une fois que vous avez déverrouillé Jenkin et installé les plugins suggérés, vous verrez l'écran suivant.

Vous devez entrer le nom d'utilisateur et le mot de passe que vous devez configurer et cliquer sur enregistrer et continuer.

Installer le plug-in d'authentification Github sans redémarrage

Une fois que vous êtes connecté, accédez à Gérer Jenkins> Gérer les plugins. Sous la rubrique Disponible tab Rechercher git . Sélectionnez le plug-in "GithubAuthentication" et cliquez sur installer sans redémarrer.

Installer le plug-in d'intégration Maven sans redémarrage

De la même manière, installez le plug-in d'intégration maven et installez-le sans redémarrage

Installer Déployer sur le conteneur Plugin sans redémarrage

Pour automatiser le déploiement d'un fichier .war sur Apache Tomcat, nous aurions besoin d'un plug-in "Déployer sur un conteneur". Installez le plug-in " Deploy to container" de la même manière que nous avons installé git et maven plug-in.



Configurer une tâche Jenkins pour le déploiement .war

Il est maintenant temps de créer une tâche freestyle. Accédez au tableau de bord principal et cliquez sur créer une tâche. Sélectionnez la tâche de style libre et continuez.

Ajouter le référentiel Github sous l'onglet Général

Sous l'onglet général, cochez la case "Projet Github" et ajoutez l'URL de votre référentiel de code source ou l'URL du référentiel que vous avez dérivé de mon référentiel.

Ajouter une URL Github sous la gestion du code source

Sous l'onglet de gestion du code source, cliquez sur le bouton radio "Git" et ajoutez l'URL du référentiel comme indiqué ci-dessous. Étant donné que mon référentiel n'est pas privé et qu'il est public, je n'ai pas eu besoin d'ajouter d'informations d'identification.

Choisissez Githubdéclencheur de crochet

Sélectionnez "GitHub hook trigger for GitSCM polling" sous l'onglet Build Triggers

Ajouter des étapes de compilation

Sous l'environnement de construction, cliquez sur ajouter une étape de construction et sélectionnez "Invoquer les cibles Maven de premier niveau"

Pour les objectifs, spécifiez nettoyer et empaqueter et enregistrer la tâche.

Tester la compilation

Pour tester le travail s'il est capable d'extraire et de construire notre code, cliquez sur Build Now.

Ajouter un déploiementActions post-construction

Maintenant que nous sommes sûrs que notre code est extrait et construit, nous sommes prêts à ajouter une action post-construction. Pour ajouter une action de post-construction, cliquez sur l'action de post-construction sous l'environnement de construction et sélectionnez "Déployer la guerre dans un conteneur".

Ensuite, ajoutez l'URL du serveur Tomcat avec les informations d'identification. Pour ajouter des informations d'identification, cliquez sur "Ajouter" et suivez les étapes que vous voyez et enregistrez le travail.

Tester la construction manuelle

Testez maintenant si notre travail est capable d'extraire, de construire et de déployer le code sur le serveur Apache Tomcat. Cliquez sur construire maintenant pour tester notre travail.

Comme vous dans la capture d'écran ci-dessus, la construction manuelle a réussi et a été déployée sur le serveur Apache Tomcat.

Pour tester si la guerre a vraiment été déployée, appuyez sur Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager pour accéder à l'application gestionnaire.

Ici, vous pouvez voir que le web_ex.war le fichier a été déployé avec succès sur le serveur Apache Tomcat.

Tester l'exemple de Java Candidature

Pour tester si l'application Java est en cours d'exécution, cliquez sur l'URL http://IP-of-Apache-Tomcat:8090/web_ex .

Configurer le Webhook sur le référentiel Github

Créer un webhook

Pour créer un livre de bébé sur l'onglet, visitez son site Web, connectez-vous à votre compte et suivez les étapes mentionnées ci-dessous.

Accédez aux paramètres de votre référentiel, dans le panneau de gauche, cliquez sur les crochets Web, puis cliquez sur "Ajouter Webhook"

Dans l'URL de la charge utile, ajoutez http://Jenkins-URL:8080/github-webhook.

Vous pouvez choisir les événements que vous souhaitez déclencher ce Webhook ou vous pouvez sélectionner "Envoyez-moi tout" si vous souhaitez déclencher le travail Jenkins sur chaque événement, cliquez sur mettre à jour Webhook pour l'enregistrer.

Tester la compilation automatique lors de la validation

Nous sommes maintenant prêts à tester notre travail de construction automatique.

Pour tester si notre travail Jenkins extrait le code de notre référentiel github à chaque validation, utilisez les commandes suivantes.

Pour cloner le référentiel localement, j'ai utilisé la commande suivante. Si vous avez votre propre rapport, accédez simplement à votre système local.

git clone https://github.com/shivalkarrahul/Innovecture.git
cd Innovecture/

Apportez quelques modifications au référentiel afin que nous puissions les pousser. Ici, j'ai ajouté un nouveau fichier localement que je vais pousser dans mon référentiel distant

appuyez sur LISEZMOI.md

Pour configurer le nom d'utilisateur et l'identifiant de messagerie pour git, utilisez les commandes suivantes.

git config user.name "Rahul Shivalkar"
git config user.email "[email protected]"

Pour valider et pousser vos modifications, utilisez les commandes suivantes

git commit -m "Tester la validation"
git push

Dès que nous transmettrons nos modifications au référentiel sur Github, cela déclenchera notre travail Jenkins que nous avons ajouté dans le Webhook Github.

Vous pouvez le voir sous "Journal d'interrogation" du travail, reportez-vous à la capture d'écran suivante pour la même chose.

Si vous accédez à la sortie de la console du travail, vous pouvez voir que le travail a été exécuté avec succès et que la guerre a été déployée sur Apache Tomcat.

Re-tester

Modifiez maintenant le code pour tester si le dernier code est déployé ou non. Je vais modifier le message qui s'affiche sur le navigateur.

Si vous utilisez votre propre rapport, apportez les modifications requises dans votre code, ici, je modifie simplement un exemple de fichier index.jsp qui imprime le message sur le navigateur.

vim src/main/webapp/index.jsp

Voyons maintenant si le code modifié est reflété ou non.

Validez les modifications que vous avez apportées à votre code à l'aide des commandes suivantes.

git add src/main/webapp/index.jsp
git commit -m "Code changé en Hello World New!"
git push

Appuyez sur l'URL d'Apache Tomcat http://IP-of-Apache-Tomcat:8090/web_ex pour accéder à notre exemple d'application.

Vous pouvez voir que le dernier code a été créé et déployé sur Apache Tomcat, ce qui signifie que l'application a été déployée avec succès et que le pipeline a également été déclenché avec succès.

Si vous avez remarqué que mon code précédent affichait simplement "Hello World !" et maintenant, lorsque j'ai apporté des modifications à mon fichier index.jsp et que je l'ai validé, la dernière application affiche "Hello World New !".

Conclusion

Dans cet article, nous avons vu les étapes de création d'un pipeline CI/CD simple qui peut extraire votre code du référentiel Github et le déployer sur le serveur Apache Tomcat à chaque validation. Nous avons également vu les étapes d'installation de Jenkins, Apache Tomcat, Java, Plug-ins dans Jenkins.


Linux
  1. Obtenez podman opérationnel sur Windows en utilisant Linux

  2. Comment créer et ajouter un volume EBS dans une instance AWS (EC2)

  3. Comment lancer une instance AWS EC2 à l'aide de Terraform

  4. Créer une instance EC2 sur AWS à l'aide de Terraform

  5. Utiliser kbhit() et getch() sous Linux

Sécurité CI/CD - Comment sécuriser votre pipeline CI/CD

Installer et configurer Jenkins sous Linux

Comment installer Rocky Linux 8 sur l'instance Amazon AWS Ec2

Configurer le flux de travail CI/CD avec les actions GitHub

Comment installer Jenkins CI/CD dans Ubuntu Linux

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN