LAB : Pipeline de build d'une application Spring avec Jenkins#
Présentation#
Objectifs:#
- Mise en place d'une pipeline jenkins de Build d'une application Spring et push vers DockerHub
- Configuration des credentials de communication entre Jenkins et DockerHub
Prérequis#
- Connaissance de Docker et GIT
- Instance docker fonctionnel
- Editeur de code
- Utilitaire installé sur la machine: git
- Avoir un proxy nginx fonctionnel (voir lab deploy reverse proxy sur la section 03-conteneurisation)
- Avoir un jenkins de fonctionnel voir lab précèdent
Déroulement du Lab#
Etape 1 : Création du pipeline sur Jenkins#
Dans cette étape, on va créer un pipeline jenkins pour récupèrer l'application Spring-Boot hébergée sur GitHub et build avec Docker.
1- Créer un job de type pipeline en cliquant sur Nouveau Item en lui donnant le nom build-springboot

2- Dans la partie Script, mettre le contenu ci-dessous
pipeline {
agent any
stages {
stage('clone Project') {
steps {
git branch: 'main', url: 'https://github.com/wingufactory/lecloudfacile-devops-labs.git'
}
}
stage('Build Docker Image') {
steps {
sh 'docker build -t moodboard-backend-app:1.0.0 springboot-react-app/moodboard-backend'
sh 'docker build -t moodboard-frontend-app:1.0.0 springboot-react-app/moodboard-frontend'
}
}
}
}
comme sur la figure ci-dessous :

3- Cliquer sur Save
Etape 2 : Exécution du pipeline#
1- Cliquer sur Lancer un build pour éxècuter le pipeline

2- une fois le job lancé avec succès, cliquer sur le job, puis Console Ouput pour afficher la sortie de l'execution du pipeline


Etape 3 : Vérification#
Se rendre sur la machine éxècutant le conteneur jenkins et lancer la commande ci-dessous pour visualiser les images buildées
docker images

Etape 4 : Ajout push images vers DockerHub#
Maintenant dans cette étape, on va rajouter une étape de push de nos images buildés vers Dockerhub
1- Se rendre sur votre compte DockerHub
2- Génèrer un token de connexion à DockerHub en se rendant sur le profil, puis dans Account settings,

3- Ensuite se rendre sur Personal access tokens et et cliquer sur Generate new token

4- Dans le champ de description, renseigner : token-dockerhub-jenkins, puis dans Access permissions, choisir Read & Write et enfin cliquer sur Generate

5- Cliquer sur Copy pour copier le token génèré et le sauvegarder quelque part.
N.B : La visualisation du token n'est disponible qu'une fois. Une fois fermé la page, il ne sera plus consultable.

6- Se rendre sur Jenkins pour configurer le credentials qui va stocker notre token
- Dans la page d'administration de Jenkins
Administer Jenkins, se rendre dansCredentials, ensuiteIdentifiants globaux (illimité)et cliquer surAdd Credentials



--> Renseigner le nom d'utilisateur de son compte Dockerhub dans le champs Nom d'utilisateur
--> Renseigner dans le champs Mot de passe le token génèré sur DockerHub
--> Dans le champ ID, renseigner token-dockerhub-jenkins
--> Dans le champ Description, renseigner Identifiants de connexion à Dockerhub
--> Enfin cliquer sur Create


7- Rajouter l'étape de push vers DockerHub dans notre pipeline Jenkins
- Se rendre sur le job
build-springboot, cliquer surConfigurer, puis mettre ce contenu :
N.B : Dans les stages Tag Docker Image et Push to DockerHub, remplacer l'utilisateur lecloudfacile par votre propre utilisateur Dockerhub comme renseigné dans la partie credentials
pipeline {
agent any
stages {
stage('clone Project') {
steps {
// Clone le repo Github pour récumèrer le code source
git branch: 'main', url: 'https://github.com/wingufactory/lecloudfacile-devops-labs.git'
}
}
stage('Build Docker Image') {
steps {
// Construction de l'image Docker pour le backend
sh 'docker build -t moodboard-backend-app:1.0.0 springboot-react-app/moodboard-backend'
// Construction de l'image Docker pour le frontend
sh 'docker build -t moodboard-frontend-app:1.0.0 springboot-react-app/moodboard-frontend'
}
}
stage('Tag Docker Image') {
steps {
// Tag des images Docker avec les noms de dépôt sur Docker Hub
sh 'docker image tag moodboard-frontend-app:1.0.0 lecloudfacile/moodboard-frontend-app:1.0.0'
sh 'docker image tag moodboard-backend-app:1.0.0 lecloudfacile/moodboard-backend-app:1.0.0'
}
}
stage('Push to DockerHub') {
steps {
echo "Pushing image to Docker Hub..."
// Utilisation des identifiants Jenkins pour se connecter à Docker Hub
withCredentials([usernamePassword(credentialsId: "token-dockerhub-jenkins", usernameVariable: "DOCKER_USER", passwordVariable: "DOCKER_PASSWORD")]) {
// Connexion et push des images Docker vers Docker Hub
sh """
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USER" --password-stdin
docker push lecloudfacile/moodboard-frontend-app:1.0.0
docker push lecloudfacile/moodboard-backend-app:1.0.0
"""
}
}
}
}
}
- Lancer un nouveau build du job
8- Vérifier que notre image est bien présente sur DockerHub
- Se rendre sur DockerHub, cliquer sur les petits points à gauche du compte, puis sur
Docker Hubpour visualiser les images

