# 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 `/!\ ATTENTION NE PRENDRE QUE LA BRANCHE MAIN /!\` ## 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 sur l'accueil 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 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/