Skip to main content

Déploiement BACKEND

Script de Déploiement Backend (Pré-production)

Ce script Bash est conçu pour automatiser le déploiement d'une application backend sur un environnement de pré-production. Il gère la mise à jour du code, la sauvegarde des versions précédentes, la configuration spécifique à l'environnement et le déploiement via Docker Compose.

🚀 Fonctionnalités

  • Sauvegarde Automatique : Archive la version précédente du déploiement avant toute mise à jour.
  • Clonage Git Sécurisé : Récupère la dernière version du code depuis un dépôt Git privé via SSH.
  • Gestion des Variables d'Environnement : Copie le fichier .env de la version précédente pour maintenir la configuration spécifique à l'environnement.
  • Déploiement Dockerisé : Construit et démarre le service Docker Compose spécifié.

🛠️ Prérequis

Avant d'exécuter ce script, assurez-vous que les éléments suivants sont configurés sur le serveur de déploiement :

  • Git : Installé et configuré.
  • Docker & Docker Compose : Installés.
  • Clé SSH : Une clé SSH (brian_git dans l'exemple) doit être configurée pour accéder au dépôt Git (git@github.com:Eiffage-AFC/WegoBackend.git). Le chemin de la clé est spécifié par la variable SSH_KEY.
  • Permissions sudo : L'utilisateur exécutant le script doit avoir les permissions sudo pour les opérations de création de répertoire, déplacement de fichiers, clonage Git et commandes Docker.

⚙️ Variables Clés

Modifiez ces variables au début du script pour l'adapter à votre projet :

  • FRONT_REPO : URL SSH du dépôt Git de votre backend.
  • BRANCH : Branche Git à déployer (par exemple, preprod ou main).
  • DEPLOY_DIR : Chemin absolu où l'application sera déployée sur le serveur.
  • DOCKER_SERVICE : Nom du service Docker à construire et démarrer (défini dans votre docker-compose.yml).
  • PREV_DIR : Répertoire où les sauvegardes des déploiements précédents seront stockées.
  • SSH_KEY : Chemin vers la clé SSH privée utilisée pour l'authentification Git.

📝 Étapes du Déploiement

  1. Préparation du dossier de sauvegarde : Crée un répertoire pour stocker les anciennes versions du déploiement.
  2. Sauvegarde : Si une version de l'application est déjà présente dans DEPLOY_DIR, elle est déplacée vers PREV_DIR avec un horodatage pour backup.
  3. Clonage du dépôt : Le script clone la branche spécifiée (preprod) du dépôt Git vers le DEPLOY_DIR. L'authentification SSH est utilisée.
  4. Configuration de l'environnement : Le fichier .env de la version précédente sauvegardée est copié dans le nouveau dossier de déploiement. (Il est essentiel que le .env de la première installation soit présent dans le dossier prev pour être copié).
  5. Build et Déploiement Docker : Le script navigue vers le DEPLOY_DIR, construit l'image Docker du service spécifié et démarre (ou redémarre) le conteneur en mode détaché.

💡 Utilisation

Pour exécuter ce script, connectez-vous à votre serveur cible via SSH et lancez-le :

bash nom_du_script.sh

#!/bin/bash

# -----------------------------
# Déploiement BAKCEND Angular (SSH)
# -----------------------------

# Variables
FRONT_REPO="git@github.com:Eiffage-AFC/WegoBackend.git"
BRANCH="preprod"
DEPLOY_DIR="/var/wego/WegoBackend"
DOCKER_SERVICE="backend"
PREV_DIR="/var/wego/prev/backend"
TIMESTAMP=$(date +%d%m%Y)
SSH_KEY="$HOME/.ssh/brian_git"

echo "?? Début du déploiement BACKEND"

# 0?? Préparer le dossier prev pour les backups
sudo mkdir -p "$PREV_DIR"

# 1?? Sauvegarder l'ancienne préprod si elle existe
if [ -d "$DEPLOY_DIR" ]; then
  echo "?? Sauvegarde de l'ancienne préprod dans $PREV_DIR/$TIMESTAMP"
  sudo mv "$DEPLOY_DIR" "$PREV_DIR/$TIMESTAMP/"
fi

# 2?? Cloner la branche preprod depuis Git via SSH
echo "?? Clonage de la branche $BRANCH via SSH"
sudo GIT_SSH_COMMAND="ssh -i $SSH_KEY -o StrictHostKeyChecking=no" git clone -b "$BRANCH" "$FRONT_REPO" "$DEPLOY_DIR"

# 3?? Configuration Backend pour la production


sudo cp "$PREV_DIR/$TIMESTAMP/.env" "$DEPLOY_DIR/.env"


echo "Fichier .env Sauvegarder"

# 4?? Build Docker et déploiement
echo "?? Build Docker et démarrage du service $DOCKER_SERVICE"
cd "$DEPLOY_DIR"
sudo docker compose build "$DOCKER_SERVICE"
sudo docker compose up -d "$DOCKER_SERVICE"

echo "? Déploiement Backend terminé !"