#!/bin/bash # Script de déploiement d'un fichier unique # Version: 1.0 # Usage: ./deploy-file.sh [pra] # : Chemin relatif du fichier à déployer (ex: pub/res/js/jdevis.js) # pra (optionnel) : Déploie vers PROD (IN4/pra-front), sinon déploie vers DEV (IN3/dva-front) # Vérifier les paramètres if [ -z "$1" ]; then echo "Usage: $0 [pra]" echo "Exemple: $0 pub/res/js/jdevis.js" echo "Exemple: $0 pub/res/js/jdevis.js pra" exit 1 fi FILE_PATH="$1" DEPLOY_MODE=${2:-dev} # Vérifier que le fichier existe localement if [ ! -f "$FILE_PATH" ]; then echo "Erreur: Le fichier '$FILE_PATH' n'existe pas" exit 1 fi # Détecter le mode de déploiement if [ "$DEPLOY_MODE" = "pra" ]; then # Configuration PROD : IN4/pra-front TARGET_HOST=11.1.2.14 TARGET_SSH_USER=root TARGET_SSH_PORT=22 TARGET_SSH_KEY=/home/pierre/.ssh/id_rsa_mbpi TARGET_CT_PROJECT=default TARGET_CT_NAME=pra-front TARGET_DEPLOY_DIR=/var/www/cleo ENV_NAME="PRODUCTION" else # Configuration DEV : IN3/dva-front TARGET_HOST=195.154.80.116 TARGET_SSH_USER=root TARGET_SSH_PORT=22 TARGET_SSH_KEY=/home/pierre/.ssh/id_rsa_mbpi TARGET_CT_PROJECT=default TARGET_CT_NAME=dva-front TARGET_DEPLOY_DIR=/var/www/cleo ENV_NAME="DÉVELOPPEMENT" fi # Propriétaire et groupe OWNER=nobody GROUP=nginx # Couleurs GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # Options SSH TARGET_SSH_OPTS="-p $TARGET_SSH_PORT -i $TARGET_SSH_KEY" TARGET_SCP_OPTS="-P $TARGET_SSH_PORT -i $TARGET_SSH_KEY" echo -e "${GREEN}=== Déploiement fichier unique ===${NC}" echo "Fichier: $FILE_PATH" echo "Environnement: $ENV_NAME ($TARGET_CT_NAME)" echo "Destination: $TARGET_DEPLOY_DIR/$FILE_PATH" echo "==================================" # 1. Copier le fichier vers le serveur hôte echo -e "${YELLOW}1. Transfert du fichier vers le serveur...${NC}" scp $TARGET_SCP_OPTS "$FILE_PATH" $TARGET_SSH_USER@$TARGET_HOST:/tmp/deploy-file.tmp if [ $? -ne 0 ]; then echo -e "${RED}Erreur lors du transfert${NC}" exit 1 fi echo -e "${GREEN}✓ Fichier transféré${NC}" # 2. Déployer dans le conteneur echo -e "${YELLOW}2. Déploiement dans le conteneur...${NC}" # Déterminer les permissions selon le type de fichier if [[ "$FILE_PATH" == ".env"* ]]; then FILE_PERMS=640 else FILE_PERMS=644 fi TARGET_SCRIPT=" set -e incus project switch $TARGET_CT_PROJECT # Créer le répertoire parent si nécessaire incus exec $TARGET_CT_NAME -- sh -c 'mkdir -p \$(dirname $TARGET_DEPLOY_DIR/$FILE_PATH)' # Transférer le fichier dans le conteneur incus file push /tmp/deploy-file.tmp $TARGET_CT_NAME$TARGET_DEPLOY_DIR/$FILE_PATH # Appliquer les permissions incus exec $TARGET_CT_NAME -- sh -c ' chown $OWNER:$GROUP $TARGET_DEPLOY_DIR/$FILE_PATH && \ chmod $FILE_PERMS $TARGET_DEPLOY_DIR/$FILE_PATH ' # Nettoyer rm -f /tmp/deploy-file.tmp echo 'Déploiement terminé!' " ssh $TARGET_SSH_OPTS $TARGET_SSH_USER@$TARGET_HOST "$TARGET_SCRIPT" if [ $? -ne 0 ]; then echo -e "${RED}Erreur lors du déploiement${NC}" ssh $TARGET_SSH_OPTS $TARGET_SSH_USER@$TARGET_HOST "rm -f /tmp/deploy-file.tmp" exit 1 fi echo -e "${GREEN}✓ Fichier déployé avec succès${NC}" echo "" echo -e "${GREEN}===================================================${NC}" echo -e "${GREEN} Déploiement terminé avec succès ! ${NC}" echo -e "${GREEN}===================================================${NC}" if [ "$DEPLOY_MODE" = "pra" ]; then echo "Site: https://cleo.unikoffice.com" echo "Environnement: PRODUCTION (pra-front)" else echo "Site: http://dcleo.unikoffice.com" echo "Environnement: DÉVELOPPEMENT (dva-front)" fi echo "Fichier: $TARGET_DEPLOY_DIR/$FILE_PATH" echo ""