La Fonderie

Comment utiliser GitLab CI/CD pour déployer un projet Nuxt SPA ?

Par Nathan Chevalier, Développeur freelance senior

·
Un clavier rétroéclairé devant un écran affichant « Data Transfer Complete »

Qu’est-ce qu’une pipeline CI/CD et pourquoi est-elle essentielle ?

Une pipeline CI/CD (intégration et livraison continues) automatise les étapes de développement logiciel, du test au déploiement. Pour un projet Nuxt SPA, elle permet :

  • D’automatiser le processus : Tests, builds, et déploiements se déroulent sans intervention manuelle.
  • De réduire les erreurs : Les pipelines standardisent le workflow, minimisant ainsi les risques liés aux tâches répétitives.
  • D’améliorer la productivité : Les développeurs peuvent se concentrer sur le code et les fonctionnalités.

Configuration initiale pour un projet Nuxt SPA

Avant de configurer votre pipeline, vérifiez que votre projet Nuxt est correctement structuré :

  1. Dépôt GitLab : Assurez-vous que votre code source est hébergé sur GitLab.
  2. Installation des dépendances : Dans le répertoire de votre projet, exécutez npm install pour garantir la présence des modules requis.
  3. Fichier nuxt.config.js : Vérifiez que le fichier est configuré pour la production, notamment avec la propriété target: 'static' ou 'server' selon votre mode d’hébergement.

Création du fichier .gitlab-ci.yml

Le fichier .gitlab-ci.yml définit la pipeline. Voici un exemple de base :

image: node:16

stages:
  - install
  - build
  - deploy

cache:
  paths:
    - node_modules/

variables:
  NUXT_ENV: production

install:
  stage: install
  script:
    - npm ci
  only:
    - main

build:
  stage: build
  script:
    - npm run build
  artifacts:
    paths:
      - .nuxt/
      - dist/
  only:
    - main

deploy:
  stage: deploy
  script:
    - rsync -avz dist/ user@server:/var/www/nuxt
  only:
    - main

Analyse détaillée de la configuration

  • Image Docker : Nous utilisons une image Node.js (version 16) pour exécuter les étapes de la pipeline.
  • Variables d’environnement : La variable NUXT_ENV est utilisée pour indiquer l’environnement de production.
  • Artefacts : Les fichiers générés par le build sont stockés comme artefacts pour être utilisés dans les étapes suivantes.

Alternatives et améliorations possibles

Voici des options alternatives pour personnaliser votre pipeline :

1. Alternatives au déploiement

Dans l’exemple précédent, nous utilisons rsync pour copier les fichiers sur un serveur distant. Voici d’autres solutions :

  • Utilisation de Docker : Construisez une image Docker contenant votre application Nuxt et déployez-la avec un orchestrateur comme Kubernetes ou Docker Swarm.
  • Déploiement sur un service cloud : Configurez une étape pour déployer directement sur un service comme Vercel, Netlify, ou AWS S3.
  • FTP/SFTP : Si votre serveur ne supporte pas rsync, vous pouvez utiliser des outils FTP comme lftp.

2. Intégration de tests

Avant le build ou le déploiement, ajoutez une étape de tests pour garantir la stabilité de votre application :

test:
  stage: test
  script:
    - npm run test
  only:
    - main

Pour un projet Nuxt, les tests peuvent inclure :

  • Tests unitaires : Utilisez Jest pour tester les composants Vue.js.
  • Tests de bout en bout : Cypress est une excellente option pour tester le comportement de votre application dans un navigateur.

3. Gestion des secrets

Les clés API et les identifiants sensibles ne doivent jamais être codés en dur. GitLab CI/CD permet de stocker ces données dans des variables protégées :

variables:
  API_KEY: $CI_API_KEY

Définissez ces variables dans l’interface de gestion de GitLab pour sécuriser votre pipeline.

Optimisation des performances

Pour des projets complexes, voici quelques astuces pour réduire les temps d’exécution :

  • Cache des dépendances : Configurez un cache performant pour éviter de réinstaller les modules à chaque build.
  • Runners dédiés : Utilisez des GitLab Runners personnalisés pour des performances accrues.
  • Stages parallèles : Divisez vos tâches en jobs parallèles pour accélérer le processus.

Conclusion

Créer une pipeline GitLab pour déployer automatiquement un projet Nuxt SPA vous permet de rationaliser vos déploiements et d’améliorer la qualité de votre application. En explorant les alternatives présentées, vous pouvez personnaliser votre pipeline pour répondre aux exigences de votre projet. Vous souhaitez un accompagnement personnalisé pour la création de vos pipelines GitLab ? Contactez-nous dès maintenant.

Nathan Chevalier

À propos de l’auteur

Plus de dix ans de développement, dont plusieurs comme CTO. J’ai créé La Fonderie pour travailler en direct avec des PME et des équipes produit qui veulent automatiser sans passer par une agence. Basé à Caen, j’interviens en Normandie et à distance partout en France.

Nathan Chevalier sur LinkedIn

On regarde ensemble ce qui peut être automatisé chez vous ?

20 minutes, sans engagement, pour comprendre votre contexte et vous dire honnêtement si ça vaut le coup.

Réserver 20 minutes

Vous préférez écrire ? contact@lafonderie.io