#!/bin/bash # Flutter Tank Web App - Update Script # Erstellt ein neues Web Build und kopiert es auf den Server set -e # Configuration SERVER_USER="root" SERVER_IP="192.168.1.19" SERVER_PATH="/root/webserver" echo "๐Ÿš€ Starting Flutter Web App Update..." echo "================================================" # Step 1: Buildnummer nach Flutter-/SemVer-Konvention erhoehen # Die SemVer-Version (MAJOR.MINOR.PATCH) wird bei fachlichen Releases manuell # in pubspec.yaml gepflegt. Jeder Deployment-Build erhaelt eine neue BUILD-Nr. CURRENT_APP_VERSION=$(sed -n 's/^version:[[:space:]]*//p' pubspec.yaml | head -n 1) if [[ ! "$CURRENT_APP_VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)\+([0-9]+)$ ]]; then echo "โŒ Invalid version in pubspec.yaml: $CURRENT_APP_VERSION" echo " Expected format: MAJOR.MINOR.PATCH+BUILD (for example 1.1.0+2)" exit 1 fi SEMVER="${CURRENT_APP_VERSION%%+*}" CURRENT_BUILD_NUMBER="${CURRENT_APP_VERSION##*+}" NEXT_BUILD_NUMBER=$((10#$CURRENT_BUILD_NUMBER + 1)) NEXT_APP_VERSION="$SEMVER+$NEXT_BUILD_NUMBER" sed -i "s/^version:.*/version: $NEXT_APP_VERSION/" pubspec.yaml echo "๐Ÿท๏ธ Version: $CURRENT_APP_VERSION -> $NEXT_APP_VERSION" echo "๐Ÿ“ฆ Building Flutter web release..." if ! flutter build web --release --no-wasm-dry-run \ --dart-define="APP_VERSION=$SEMVER" \ --dart-define="APP_BUILD_NUMBER=$NEXT_BUILD_NUMBER"; then sed -i "s/^version:.*/version: $CURRENT_APP_VERSION/" pubspec.yaml echo "โŒ Build failed!" echo " Version restored to $CURRENT_APP_VERSION" exit 1 fi echo "โœ… Build successful!" # Step 2: Clean and copy to local webserver folder (preserve installDocker) echo "๐Ÿงน Cleaning webserver folder (keeping installDocker)..." rm -rf webserver/assets webserver/canvaskit webserver/icons rm -f webserver/*.js webserver/*.json webserver/*.html webserver/*.png echo "๐Ÿ“‹ Copying new build to webserver folder..." cp -r build/web/* webserver/ echo "โœ… Local webserver folder updated!" # Step 3: Copy to server echo "๐Ÿ“ค Copying to server $SERVER_IP..." sudo scp -r webserver/* $SERVER_USER@$SERVER_IP:$SERVER_PATH/ if [ $? -ne 0 ]; then echo "โŒ Server copy failed!" exit 1 fi echo "โœ… Files copied to server!" # Step 4: Restart webserver echo "๐Ÿ”„ Restarting webserver container..." ssh $SERVER_USER@$SERVER_IP "cd $SERVER_PATH/installDocker && ./deploy.sh" if [ $? -ne 0 ]; then echo "โš ๏ธ Warning: Server restart failed or deploy.sh not found" echo " You may need to manually restart the webserver" else echo "โœ… Webserver restarted!" fi echo "" echo "โœ… Update complete!" echo "================================================" echo "Your app should now be updated at:" echo " http://tank.joshihomeserver.ipv64.net" echo "Deployed version: $NEXT_APP_VERSION" echo "The login page must show: Version $SEMVER (Build $NEXT_BUILD_NUMBER)" echo "If another version is shown, refresh the browser with Ctrl+F5." echo "================================================"