TP : Votre premier pipeline CI/CD avec Node.js¶
Ce TP a pour objectif de vous faire pratiquer la mise en place d'un pipeline d'intégration continue (CI) sur GitLab pour une application Node.js simple
Objectifs du TP¶
- Comprendre la structure d'un fichier
.gitlab-ci.yml - Initialiser un projet Node.js et son serveur Express
- Configurer des étapes de build et d'installation automatisées
- Optimiser le pipeline avec la gestion du cache
Étape 1 : Le "Hello World" de la CI¶
Avant de manipuler du code applicatif, nous allons valider que votre environnement GitLab fonctionne correctement
- Créez un fichier nommé
.gitlab-ci.ymlà la racine de votre dépôt - Définissez une étape (stage) nommée
test - Créez un job nommé
hello_jobqui appartient à cette étape et dont le script affiche simplement "Hello World" dans les logs - Commitez ce fichier et vérifiez dans l'interface GitLab (section Build > Pipelines) que votre job s'exécute avec succès
Étape 2 : Préparation de l'application Node.js¶
Nous allons maintenant créer une application web très simple avec le framework Express
- Initialisez un nouveau projet Node.js avec la commande
npm init - Installez la dépendance
express - Créez un fichier
index.jsqui démarre un serveur sur le port 3000 et répond "Hello World" sur la route racine/ - Testez votre application localement avec
node index.jspour vous assurer qu'elle fonctionne - Pensez à ajouter un fichier
.gitignorepour ne pas envoyer le dossiernode_modulessur votre dépôt Git
Étape 3 : Automatisation de l'installation et du build¶
Maintenant que l'application est prête, nous voulons que GitLab s'occupe de préparer l'environnement à chaque changement de code
- Modifiez votre fichier
.gitlab-ci.ymlpour utiliser l'image Dockernode:20 - Définissez deux étapes :
installetbuild - Créez un job
install_dependenciesdans le stageinstallqui utilise la commandenpm ci(plus rapide et stable quenpm installdans un contexte CI) - Créez un job
build_appdans le stagebuildqui exécute la commande de build de votre projet- Indice : Vous devrez probablement ajouter un script
"build": "echo 'Building...'"dans votrepackage.jsonpour nous faciliter cette étape
- Indice : Vous devrez probablement ajouter un script
Étape 4 : Optimisation avec le cache¶
Vous remarquerez que chaque job repart d'un environnement vide. Pour éviter de télécharger les dépendances à chaque fois, nous allons utiliser le cache
- Ajoutez une section
cacheglobale dans votre configuration - Configurez-la pour conserver le dossier
node_modules/ - Observez la différence de temps d'exécution sur vos prochains pipelines
Étape 5 : Bonus - Vérification des dépendances¶
Il est important de savoir si vos bibliothèques sont à jour pour éviter des failles de sécurité ou des bugs
- Ajoutez un job nommé
check_updatesdans un stage de test - Utilisez la commande
npm outdatedpour l'exécuter - Utilisez l'option
allow_failure: truepour que votre pipeline ne soit pas bloqué si une mise à jour est disponible, car c'est une information informative pour ce TP