Add guide
All checks were successful
rock-paper-scissors/pipeline/head This commit looks good

This commit is contained in:
Maxime Pierront
2025-11-23 13:09:37 +01:00
parent b4555aa73f
commit e93481c91f
4 changed files with 176 additions and 0 deletions

176
README.md Normal file
View File

@@ -0,0 +1,176 @@
# Travaux Pratiques CI/CD
Le but de ce TP est dutiliser un git déjà existant et dy installer une multibranche pipeline Jenkins.
## Copier le git du TP sur son profil
Se rendre sur : https://grond.iut-fbleau.fr/pierront/rock-paper-scissors
Faire un fork
## Créer la VM pour jenkins
### Créer la règle pare-feu pour accéder aux ports 8080 et 8081
Aller dans la section Pare-Feu
* Cliquer -> Créer une règle de pare-feu
* Nom : jenkins-rule
* Sens du trafic : Entrée
* Tag cibles : jenkins
* Plages IPv4 source : 0.0.0.0/0
* Cocher TCP
* Ports : 8080, 8081
* Puis créer
---
* Créer la VM
* Configuration de la machine
* Nom : jenkins
* Région : la plus proche
* Série : E2 / e2-medium
* Mise en réseau
* Cocher Autoriser le trafic HTTP
* Cocher Autoriser le trafic HTTPS
* Tags réseau : ajouter jenkins
* Créer la VM
---
## Installation de Jenkins sur la VM
Installer git
```bash
sudo apt install -y git
```
Installer Java
```bash
sudo apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update
sudo apt install temurin-21-jdk
```
Installer Jenkins
```bash
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install jenkins
```
Verifier s'il a bien démarrer :
`systemctl status jenkins`
Se rendre sur l'adresse IP de la VM : http://<IP_EXTERNE_VM>:8080
Vous devriez voir la page d'accueil de Jenkins
![img.png](assets/jenkins_start.png)
* Suivre les instructions pour la creation de compte admin
* Selectionner : Install suggested plugins
* Créer un nouveau compte admin
* Voir cette page
![img.png](assets/jenkins_home.png)
---
## Configuration de Jenkins avec Gitea
### Installer le plugin Gitea
* Aller dans la section Manage Jenkins **(roue crantée)** -> Plugins
* Rechercher Gitea
* Installer le plugin
### Configurer Maven
* Aller dans la section Manage Jenkins **(roue crantée)** -> Tools
* Add Maven
* Nom : maven-3.9
* Cocher Install automatically
* Version : 3.9.11
* Cliquer sur Save
### Récupérer un token Gitea
* Se rendre sur Gitea
* Cliquer sur profil -> Settings -> Applications -> Generate new token
* Nom du jeton : jenkins-token
* Avec ces options :
![img.png](assets/gitea_token.png)
* Cliquer sur Generate token
* **Copier le token pour ne pas le perdre**
### Configurer Jenkins pour utiliser Gitea
* Aller dans la section Manage Jenkins -> System
* Add Gitea Server
* Choisir le nom du serveur (grond)
* Metter l'url du serveur : https://grond.iut-fbleau.fr
* Cocher Manage hooks
* Cliquer sur _Add +_
* Kind : Gitea Personal Access Token
* Token : celui copié dans la section précédente
* ID : gitea-token
* Cliquer sur Add
* Puis save
---
## Création d'un pipeline
* Aller dans la section Manage Jenkins -> New Item
* Nommer le projet : rock-paper-scissors
* Choisir le type de projet : Multibranch Pipeline
* Cliquer sur OK
* Add a source
* Gitea
* utiliser le jeton gitea-token
* owner : _<votre nom d'utilisateur gitea>_
* Choisir le projet : rock-paper-scissors
* Choisir le provider : Git
* Choisir le repository : https://grond.iut-fbleau.fr/pierront/rock-paper-scissors.git
* Cliquer sur Save
Voir que le scan se passe bien.
---
## Tester le pipeline
* Aller dans la section Build History -> Build Now
* Voir que le pipeline se passe bien
Tester l'application via cette url : http://<IP_EXTERNE_VM>:8081/swagger-ui/index.html
---
## Gestion du Jenkinsfile
* Regarder les étapes pour comprendre ce que fait le Jenkinsfile
---
## Ajouter le puits dans le code java
Le puits bat la pierre et les ciseaux.
Le puits est battu par la feuille.
Grace à notre pipeline on peut voir le si le code fonctionne bien via les tests unitaires.
Puis on peut tester réelement grace au deploiement sur la VM de l'application java.
Sources :
* https://adoptium.net/installation/linux/#deb-installation-on-debian-or-ubuntu
* https://www.jenkins.io/doc/book/installing/linux/#debianubuntu
* https://plugins.jenkins.io/gitea/
* https://www.jenkins.io/doc/book/pipeline/jenkinsfile/

BIN
assets/gitea_token.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
assets/jenkins_home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
assets/jenkins_start.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB