Skip to content

Déploiement

stephane-og edited this page May 3, 2024 · 2 revisions

Déploiement continu et automatisé avec Capistrano

Le déploiement continu et automatisé est une pratique essentielle dans le développement logiciel moderne. Il vise à automatiser le processus de déploiement des applications, ce qui permet de réduire les erreurs humaines, d'accélérer le déploiement des nouvelles fonctionnalités et de garantir la cohérence de l'environnement de production.

Avantages du déploiement continu et automatisé

Le déploiement continu et automatisé présente plusieurs avantages :

  • Rapidité : En automatisant le processus de déploiement, les nouvelles fonctionnalités peuvent être mises en production plus rapidement, ce qui réduit le temps nécessaire pour livrer de la valeur aux utilisateurs.

  • Fiabilité : En réduisant la dépendance aux interventions manuelles, le déploiement automatisé réduit les risques d'erreur humaine et garantit une mise en production plus fiable et stable.

  • Répétabilité : Les déploiements automatisés garantissent que chaque version de l'application est déployée de la même manière, ce qui facilite la reproduction des environnements et la résolution des problèmes.

  • Amélioration continue : En automatisant le processus de déploiement, les équipes peuvent se concentrer sur l'amélioration continue de l'application plutôt que sur les tâches manuelles et répétitives liées au déploiement.

Processus de déploiement avec Capistrano dans Bachelora

Capistrano est un outil populaire utilisé pour automatiser le déploiement d'applications web. Voici les étapes principales du processus de déploiement avec Capistrano :

  1. Préparation du serveur : Capistrano se connecte au serveur de production et prépare l'environnement pour le déploiement en installant les dépendances nécessaires et en configurant les permissions.

  2. Clonage du dépôt : Capistrano clone le dépôt Git de l'application sur le serveur de production, en utilisant la branche spécifiée dans la configuration (dans notre cas, la branche main).

  3. Installation des dépendances : Capistrano installe les dépendances de l'application, telles que les packages Python définis dans le fichier requirements.txt et Sass qui est un préprocesseur CSS qui étend les fonctionnalités de CSS pour VueJs.

  4. Configuration de l'application : Capistrano configure l'application en créant les liens symboliques vers les fichiers de configuration spécifiques à l'environnement (comme le fichier .env).

  5. Construction de l'application Vue.js : Si l'application utilise Vue.js, Capistrano construit l'application en exécutant les commandes nécessaires pour installer les dépendances et construire les fichiers statiques.

  6. Redémarrage du serveur Gunicorn : Capistrano redémarre le serveur Gunicorn pour charger la nouvelle version de l'application. Pour ce faire, nous avons utilisé le script suivant qui kill tous les process de Gunicorn et qui le restart juste après, ce qui permet de forcer son redémarrage.

# Trouver les ID des processus Gunicorn
PIDS=$(pgrep gunicorn)

# Si des processus Gunicorn sont en cours d'ex  cution
if [ -n "$PIDS" ]; then
    # Tuer les processus Gunicorn
    kill -9 $PIDS
fi

sudo systemctl restart gunicorn

echo "Gunicorn restart done."
  1. Migration de la base de données : Capistrano exécute les migrations de base de données pour mettre à jour le schéma de la base de données avec les changements éventuels dans le code.

  2. Collecte des fichiers statiques : Capistrano collecte les fichiers statiques de l'application (comme les fichiers CSS, JavaScript et les fichiers d'images) et les copie dans un répertoire accessible par le serveur web.

Grâce à Capistrano, le déploiement a pu être entièrement automatisé, ce qui nous a permis de nous concentrer sur l'écriture de code sans avoir à se soucier des détails techniques du déploiement en production durant tout le projet.