Files
flutter_tank_web_app/update-web.sh
T
2026-10-09 19:35:51 +02:00

89 lines
2.9 KiB
Bash
Executable File

#!/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 "================================================"