Aller au contenu

Premier workflow avec nodejs slides

Premier workflow Hello World

Un pipeline est constitué de stages, qui contiennent des jobs. Chaque job effectue une tâche précise. Voici un exemple minimaliste de pipeline CI pour afficher "Hello World!" :

stages:
  - test

hello_world_job:
  stage: test
  script:
    - echo "Hello, World!"

Dans cet exemple : - Nous avons un seul stage appelé test - Le job hello_world_job est exécuté dans ce stage et il utilise la commande echo pour afficher "Hello, World!"


Création d'une première application Node.js

Créez un nouveau projet Node.js :

mkdir my-first-app
cd my-first-app
npm init -y
npm install express

Création d'une première application Node.js

Ensuite, créez un fichier index.js avec le contenu suivant pour démarrer un serveur web basique :

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World from Node.js!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

Pour démarrer l'application localement, utilisez :

node index.js

Votre première application Node.js est maintenant prête


Ajouter un workflow CI pour l'application

Ensuite, nous allons ajouter un pipeline CI pour cette application dans le fichier .gitlab-ci.yml

image: node:20

stages:
  - install
  - build

# Utilisation du cache pour accélérer les futurs pipelines
cache:
  paths:
    - node_modules/

install_dependencies:
  stage: install
  script:
    - npm ci
  # On ne conserve node_modules comme artifact que si on ne veut pas utiliser le cache
  # Ici on privilégie le cache pour la performance

build_app:
  stage: build
  script:
    # Assurez-vous d'avoir un script "build" dans votre package.json
    - npm run build

Dans cet exemple :

  • install_dependencies utilise npm ci pour une installation propre et reproductible basée sur le lockfile
  • build_app compile ou prépare l'application pour la production

Job bonus

Vous pouvez ajouter un job supplémentaire pour vérifier si vos dépendances Node.js sont à jour

check_updates:
  stage: test
  script:
    - npm outdated
  allow_failure: true

Le job check_updates liste les packages ayant une version plus récente. L'option allow_failure permet de ne pas bloquer le pipeline si des mises à jour sont disponibles


Récap

Avec ces étapes, vous avez : - Initialisé un pipeline GitLab CI avec un simple "Hello World!" - Créé une application Node.js simple - Ajouté un pipeline CI optimisé avec gestion du cache - Utilisé npm ci pour garantir la reproductibilité des installations - Ajouté une vérification des dépendances obsolètes

N'hésitez pas à itérer et ajouter des stages supplémentaires pour des tests, des vérifications de code, et des déploiements !


☕️ Si tu souhaites soutenir mon travail, tu peux m'offrir un café ici.