From e342cb18b1332b2abe8199504a2d301b6bd75a7a Mon Sep 17 00:00:00 2001 From: atef Date: Tue, 26 Nov 2024 15:50:34 +0100 Subject: [PATCH] Update the deploy script with backup feature. --- csharp/App/SaliMax/deploy.sh | 40 ++++++++++++++++++++++++++++--- csharp/App/SaliMax/src/Program.cs | 4 +--- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/csharp/App/SaliMax/deploy.sh b/csharp/App/SaliMax/deploy.sh index 057e274b5..a7bb0406b 100755 --- a/csharp/App/SaliMax/deploy.sh +++ b/csharp/App/SaliMax/deploy.sh @@ -6,21 +6,55 @@ username='ie-entwicklung' root_password='Salimax4x25' set -e +# Define directories +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 + echo -e "\n============================ Build ============================\n" +# Build the project dotnet publish \ ./SaliMax.csproj \ -p:PublishTrimmed=false \ -c Release \ -r linux-x64 +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/" + +echo -e "\n============================ Cleanup Old Backups ============================\n" +# Cleanup old backups if the total number exceeds the maximum allowed + +# 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") + +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" +else + echo "Backup limit not reached. Current number of backups: $BACKUP_COUNT" +fi + 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 + $username@"$salimax_ip":~/salimax -echo -e "\n============================ Execute ============================\n" +echo -e "\nDeployment complete!\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 + + +#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 diff --git a/csharp/App/SaliMax/src/Program.cs b/csharp/App/SaliMax/src/Program.cs index c017e5839..aab98787c 100644 --- a/csharp/App/SaliMax/src/Program.cs +++ b/csharp/App/SaliMax/src/Program.cs @@ -223,8 +223,6 @@ internal static class Program Watchdog.NotifyAlive(); var record = ReadStatus(); - - /******************************************** For Battery Debug *************************************/ var currentSalimaxState = GetSalimaxStateAlarm(record); @@ -572,7 +570,7 @@ internal static class Program } else { - Console.WriteLine(" Different ActiveUpperVoltage between inverters "); + Console.WriteLine(" Different ActiveUpperVoltage between inverters "); // this should be reported to salimax Alarm return; }