projets:mca:deploiement

Il faut placer le fichier de déploiement deploy.sh dans le dossier où l'on souhaite faire l'installation.

deploy.sh
#!/bin/bash
 
#Requiert NPM, PHP 7.2 & COMPOSER
#############
#############
##Déclarations des variables
chemin="/var/www/dev-my.centrale-assos.fr"
dossier="plateforme-assos"
url_git=ssh://git@git.centrale-marseille.fr/ginfo/plateform-assos/plateforme-assos.git
##############
##############
 
 
#NE PAS EDITER EN DESSOUS
 
#Constructions d'autres variables
chemin_web=$chemin/$dossier
rel_upload="public/upload"
chemin_upload=$chemin_web/$rel_upload
chemin_temporaire=$chemin/temp
chemin_temporaire_racine=$chemin_temporaire/$dossier
chemin_temporaire_upload=$chemin_temporaire/$dossier/$rel_upload
 
if [ -d $chemin_temporaire ]; then
  echo "Un déploiement semble déjà en cours (dossier temp existant), merci d'attendre ou de supprimer le dossier";exit 1;
fi
 
read -p "Ceci est-il un premier déploiement ? (y/n)" choice
case "$choice" in 
  y|Y ) new_deployment=1;;
  n|N ) new_deployment=0;;
  * ) echo "Réponse invalide";exit1;;
esac
 
#Vérification que tout est bon
echo "Le chemin absolu du projet est "$chemin_web
 
if [ $new_deployment = 0 ]; then
echo "Le chemin des uploads du projet est "$chemin_upload
echo "Le chemin temporaire pour la migration est "$chemin_temporaire
echo "La racine du chemin temporaire est "$chemin_temporaire_racine
echo "La racine des uploads pour le chemin temporaire est "$chemin_temporaire_upload
fi
 
read -p "Confirmez vous toutes les informations ci dessus (y/n)?" choice
case "$choice" in 
  y|Y );;
  n|N ) echo "Déploiement stoppé";exit 1;;
  * ) echo "Réponse invalide";exit1;;
esac
 
#Fonction de déploiement
 
function pre_deploy {
 
#On vérifie que sur l ancienne install on avait bien un dossier d upload
if [ ! -d $chemin_upload ] && [ $new_deployment = 0 ]; then
  read -p "Dossier d'upload non trouvé dans "$chemin_upload", poursuivre l'installation ? (NE PAS CONTINUER SI CE N'EST PAS UNE PREMIERE INSTALLATION) (y/n)?" choice
  case "$choice" in 
    y|Y );;
    n|N ) echo "Déploiement stoppé";exit 1;;
    * ) echo "Réponse invalide";exit 1;;
  esac
fi
 
if [ ! -f $chemin_web/.env ] && [ $new_deployment = 0 ]; then
echo "Fichier .env non trouvé dans "$chemin_web" déploiement interrompu";exit 1;
fi
 
if [ -d $chemin_web ] && [ $new_deployment = 1 ]; then
  echo "Un dossier a été trouvé en "chemin_web", cela ne peut pas être un nouveau déploiement" ;exit 1;
fi
 
 
#Si tout va bien on peut commencer à faire le projet dans le dossier temp
mkdir $chemin_temporaire;
cd $chemin_temporaire;
 
echo "Téléchargement du projet"
git clone $url_git $dossier
 
 
if [ -d $chemin_upload ]; then
  mkdir -p $chemin_temporaire_upload
  echo "Copie du dossier des uploads"
  cp -R $chemin_upload/* $chemin_temporaire_upload
  echo "Fichiers d'uplaods copiés dans "$chemin_temporaire_upload
fi
 
if [ -f $chemin_web/.env ]; then
  echo "Copie du fichier d'environnement"
  cp -R $chemin_web/.env $chemin_temporaire_racine/.env
  echo "Fichier .env copié dans "$chemin_temporaire_racine
fi
 
 
#Maintenant on passe à l'installation des dépendances
cd $chemin_temporaire_racine
echo "Installation des dépendances back"
composer install
echo "Installation des dépendances front"
npm install
echo "Compilation des dépendances front"
npm run build
 
}
 
function deploy {
  read -p "Le déploiement va commencer confirmer (y/n)?" choice
  case "$choice" in 
    y|Y );;
    n|N ) echo "Déploiement stoppé";rm -R $chemin_temporaire;exit 1;;
    * ) echo "Réponse invalide, déploiement stoppé";rm -R $chemin_temporaire;exit 1;;
  esac
  if [ -d $chemin_web ]; then
    echo "Suppression du dossier racine principal"
    rm -R $chemin_web
  fi
  echo "Déplacement du dossier temporaire vers le dossier principal"
  mv $chemin_temporaire_racine $chemin
  echo "Suppression du dossier temporaire"
  rm -R $chemin_temporaire
 
}
 
function post_deploy {
 
cd $chemin_web
php bin/console cache:clear --env=prod
chown -R www-data:www-data $chemin
 
if [ $new_deployment = 1 ]; then
  echo "Il vous reste maintenant à créer la base de donnée avec php bin/console doctrine:database:create après avoir configuré le fichier .env"
fi
 
}
 
 
pre_deploy
deploy
post_deploy
  • projets/mca/deploiement.txt
  • Dernière modification : 19/08/2018 18:52
  • de pnahoum