diff --git a/README.md b/README.md new file mode 100644 index 0000000..43e8a74 --- /dev/null +++ b/README.md @@ -0,0 +1,176 @@ +# Travaux Pratiques CI/CD + +Le but de ce TP est d’utiliser un git déjà existant et d’y 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://: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 : __ + * 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://: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/ diff --git a/assets/gitea_token.png b/assets/gitea_token.png new file mode 100644 index 0000000..48cfb6f Binary files /dev/null and b/assets/gitea_token.png differ diff --git a/assets/jenkins_home.png b/assets/jenkins_home.png new file mode 100644 index 0000000..c65daa6 Binary files /dev/null and b/assets/jenkins_home.png differ diff --git a/assets/jenkins_start.png b/assets/jenkins_start.png new file mode 100644 index 0000000..8eab429 Binary files /dev/null and b/assets/jenkins_start.png differ