From 1dac314c38ab5cced3831e4049e6693d7ce29982 Mon Sep 17 00:00:00 2001 From: atef Date: Tue, 31 Dec 2024 16:20:10 +0100 Subject: [PATCH] update deploy script --- csharp/App/SaliMax/deploy.sh | 63 ++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/csharp/App/SaliMax/deploy.sh b/csharp/App/SaliMax/deploy.sh index a7bb0406b..2e839ec08 100755 --- a/csharp/App/SaliMax/deploy.sh +++ b/csharp/App/SaliMax/deploy.sh @@ -6,55 +6,68 @@ username='ie-entwicklung' root_password='Salimax4x25' set -e -# Define directories +# Define directories and configurations DEST_DIR="/home/$username/salimax/SaliMax" # Path to the specific file -BACKUP_DIR="/home/$username/salimax/salimax_backup/$(date +'%Y%m%d_%H%M%S')" # Backup folder with timestamp -MAX_BACKUPS=10 # Limit to 10 backups +BACKUP_ROOT="/home/$username/salimax/salimax_backup" # Base backup directory +TIMESTAMP=$(date +'%Y%m%d_%H%M%S') +BACKUP_DIR="${BACKUP_ROOT}/script_backup_${TIMESTAMP}" +# Backup directory with unique name +MAX_BACKUPS=5 # Limit to 5 backups -echo -e "\n============================ Build ============================\n" +echo -e "\n============================ Build ============================\n" # Build the project -dotnet publish \ - ./SaliMax.csproj \ - -p:PublishTrimmed=false \ - -c Release \ - -r linux-x64 +dotnet publish \ + ./SaliMax.csproj \ + -p:PublishTrimmed=false \ + -c Release \ + -r linux-x64 -echo -e "\n============================ Backup Old SaliMax File ============================\n" +echo -e "\n============================ Backup Old SaliMax File ============================\n" # SSH into the remote machine and create the backup directory ssh $username@$salimax_ip "mkdir -p $BACKUP_DIR" # Move the 'SaliMax' file to the backup folder on the remote machine -ssh $username@$salimax_ip "rsync -av --exclude='$BACKUP_DIR/*' --exclude='salimax_backup/*' $DEST_DIR $BACKUP_DIR/" +ssh $username@$salimax_ip "rsync -av --exclude='${BACKUP_ROOT}/script_backup_*' --exclude='salimax_backup/*' $DEST_DIR $BACKUP_DIR/" + +echo -e "\n============================ Cleanup Old Backups ============================\n" -echo -e "\n============================ Cleanup Old Backups ============================\n" # Cleanup old backups if the total number exceeds the maximum allowed +echo "Existing backups:" +ssh $username@$salimax_ip "ls -1d ${BACKUP_ROOT}/script_backup_* 2>/dev/null" -# List all backups and remove the oldest if the number exceeds MAX_BACKUPS -BACKUP_COUNT=$(ssh $username@$salimax_ip "ls -1 /home/$username/salimax/salimax_backup | wc -l") +# Count the backups created by this script +BACKUP_COUNT=$(ssh $username@$salimax_ip "ls -1d ${BACKUP_ROOT}/script_backup_* 2>/dev/null | wc -l") +echo "Current number of backups: $BACKUP_COUNT" -if [ $BACKUP_COUNT -gt $MAX_BACKUPS ]; then - # Find and delete the oldest backup - OLD_BACKUP=$(ssh $username@$salimax_ip "ls -1 /home/$username/salimax/salimax_backup | head -n 1") - echo "Backup limit reached. Deleting old backup: $OLD_BACKUP" - ssh $username@$salimax_ip "rm -rf /home/$username//salimax/salimax_backup/$OLD_BACKUP" +if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then + # Find and delete the oldest backup created by the script + OLD_BACKUP=$(ssh $username@$salimax_ip "find ${BACKUP_ROOT} -type d -name 'script_backup_*' | sort | head -n 1") + echo "Old backup to delete: $OLD_BACKUP" + + if [ -n "$OLD_BACKUP" ]; then + echo "Backup limit reached. Deleting old backup: $OLD_BACKUP" + ssh $username@$salimax_ip "rm -rf $OLD_BACKUP" && echo "Deleted: $OLD_BACKUP" || echo "Failed to delete: $OLD_BACKUP" + else + echo "No valid backups to delete." + fi else - echo "Backup limit not reached. Current number of backups: $BACKUP_COUNT" + echo "Backup limit not reached. Current number of backups: $BACKUP_COUNT" fi -echo -e "\n============================ Deploy ============================\n" + +echo -e "\n============================ Deploy ============================\n" # Deploy new files to the remote destination rsync -v \ - --exclude '*.pdb' \ - ./bin/Release/$dotnet_version/linux-x64/publish/* \ - $username@"$salimax_ip":~/salimax + --exclude '*.pdb' \ + ./bin/Release/$dotnet_version/linux-x64/publish/* \ + $username@"$salimax_ip":~/salimax echo -e "\nDeployment complete!\n" - #echo -e "\n============================ Execute ============================\n" #sshpass -p "$root_password" ssh -o StrictHostKeyChecking=no -t "$username"@"$salimax_ip" "echo '$root_password' | sudo -S sh -c 'cd salimax && ./restart'" 2>/dev/null