89 lines
2.9 KiB
Bash
Executable File
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 "================================================"
|