74 lines
2.7 KiB
Bash
74 lines
2.7 KiB
Bash
# start SSH agent and add key
|
|
eval $(ssh-agent -s)
|
|
ssh-add /c/.ssh/deepdrft_dch6_ed25519
|
|
|
|
CONTENT_PROJ="DeepDrftContent"
|
|
WEB_PROJ="DeepDrftPublic"
|
|
WEB_SERVICES_PROJ="DeepDrftData"
|
|
CONTENT_APP="deepdrft-content.tar.gz"
|
|
WEB_APP="deepdrft-web.tar.gz"
|
|
|
|
# Restore and Publish
|
|
dotnet publish $CONTENT_PROJ -c Release -f net10.0 -o $CONTENT_PROJ/publish -r linux-x64 -p:Platform="Any CPU" --verbosity normal
|
|
dotnet publish $WEB_PROJ -c Release -f net10.0 -o $WEB_PROJ/publish -r linux-x64 -p:Platform="Any CPU" --verbosity normal
|
|
|
|
# Check if migrations are needed
|
|
WEB_MIG="deepdrft-migrations.sql"
|
|
REMOTE="deepdrft@dch6.snailbird.net"
|
|
WEB_APPROOT="/deepdrft/web"
|
|
|
|
LATEST_MIGRATION=$(dotnet ef migrations list --project $WEB_SERVICES_PROJ --context DeepDrftContext | tail -1)
|
|
REMOTE_MIGRATION=$(ssh $REMOTE "sqlite3 $WEB_APPROOT/Database/deepdrft.db 'SELECT MigrationId FROM __EFMigrationsHistory ORDER BY MigrationId DESC LIMIT 1;'" 2>/dev/null || echo "")
|
|
|
|
if [ "$LATEST_MIGRATION" != "$REMOTE_MIGRATION" ]; then
|
|
echo "Generating migration script from $REMOTE_MIGRATION to $LATEST_MIGRATION..."
|
|
if [ -z "$REMOTE_MIGRATION" ]; then
|
|
dotnet ef migrations script --project $WEB_SERVICES_PROJ --context DeepDrftContext --output $WEB_MIG --verbose
|
|
else
|
|
dotnet ef migrations script $REMOTE_MIGRATION --project $WEB_SERVICES_PROJ --context DeepDrftContext --output $WEB_MIG --verbose
|
|
fi
|
|
APPLY_MIGRATIONS=true
|
|
else
|
|
echo "Database is up to date."
|
|
APPLY_MIGRATIONS=false
|
|
fi
|
|
|
|
# Compress published files
|
|
tar -czf $CONTENT_APP -C $CONTENT_PROJ/publish .
|
|
tar -czf $WEB_APP -C $WEB_PROJ/publish .
|
|
|
|
# Deploy
|
|
CONTENT_APPROOT="/deepdrft/api/content"
|
|
|
|
ssh $REMOTE "rm -rf $CONTENT_APPROOT/bin/*"
|
|
ssh $REMOTE "rm -rf $WEB_APPROOT/bin/*"
|
|
scp $CONTENT_APP $REMOTE:$CONTENT_APPROOT/$CONTENT_APP
|
|
if [ "$APPLY_MIGRATIONS" = true ]; then
|
|
scp $WEB_MIG $REMOTE:$WEB_APPROOT/$WEB_MIG
|
|
fi
|
|
scp $WEB_APP $REMOTE:$WEB_APPROOT/$WEB_APP
|
|
ssh $REMOTE "tar -xzf $CONTENT_APPROOT/$CONTENT_APP -C $CONTENT_APPROOT/bin && rm $CONTENT_APPROOT/$CONTENT_APP"
|
|
ssh $REMOTE "tar -xzf $WEB_APPROOT/$WEB_APP -C $WEB_APPROOT/bin && rm $WEB_APPROOT/$WEB_APP"
|
|
|
|
# Apply Local Environment
|
|
ssh $REMOTE "cp $CONTENT_APPROOT/environment/* $CONTENT_APPROOT/bin/environment"
|
|
|
|
# Apply database migrations on server
|
|
if [ "$APPLY_MIGRATIONS" = true ]; then
|
|
ssh $REMOTE "sqlite3 $WEB_APPROOT/Database/deepdrft.db < $WEB_APPROOT/$WEB_MIG && rm $WEB_APPROOT/$WEB_MIG"
|
|
fi
|
|
|
|
# Restart the service
|
|
ssh $REMOTE "$CONTENT_APPROOT/restart.sh"
|
|
ssh $REMOTE "$WEB_APPROOT/restart.sh"
|
|
|
|
# Clean up
|
|
rm -rf ./$CONTENT_PROJ/publish
|
|
rm -f ./$CONTENT_APP
|
|
rm -rf ./$WEB_PROJ/publish
|
|
rm -f ./$WEB_APP
|
|
if [ "$APPLY_MIGRATIONS" = true ]; then
|
|
rm -f ./$WEB_MIG
|
|
fi
|
|
ssh-agent -k
|