Files
SkyArtShop/rebuild-and-deploy.sh

120 lines
3.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# SkyArtShop - Rebuild and Deploy Script
# Run this script after making changes to your code
set -e # Exit on error
echo "========================================"
echo " SkyArtShop - Rebuild & Deploy"
echo "========================================"
echo ""
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
# Change to project directory
cd /var/www/SkyArtShop
# Step 1: Build
echo -e "${YELLOW}[1/5] Building application...${NC}"
dotnet build SkyArtShop.csproj -c Release
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ Build successful${NC}"
else
echo -e "${RED}✗ Build failed${NC}"
exit 1
fi
echo ""
# Step 2: Clean and Publish
echo -e "${YELLOW}[2/5] Cleaning old publish directory...${NC}"
rm -rf ./publish_temp
mkdir -p ./publish_temp
echo -e "${YELLOW}[2/5] Publishing to ./publish_temp...${NC}"
dotnet publish SkyArtShop.csproj -c Release -o ./publish_temp --no-build
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ Publish successful${NC}"
else
echo -e "${RED}✗ Publish failed${NC}"
exit 1
fi
echo ""
# Step 3: Stop service and swap directories
echo -e "${YELLOW}[3/5] Stopping application...${NC}"
sudo systemctl stop skyartshop
sleep 1
echo -e "${YELLOW}[3/5] Swapping publish directories...${NC}"
if [ -d "./publish" ]; then
sudo rm -rf ./publish_old
sudo mv ./publish ./publish_old
fi
mv ./publish_temp ./publish
echo -e "${YELLOW}[3/5] Setting permissions...${NC}"
sudo chown -R www-data:www-data ./publish
sudo chmod +x ./publish/SkyArtShop.dll
echo -e "${GREEN}✓ Permissions set${NC}"
echo ""
# Step 4: Restart services
echo -e "${YELLOW}[4/5] Restarting services...${NC}"
sudo systemctl restart skyartshop
echo " Waiting for application to start..."
sleep 5
if systemctl is-active --quiet skyartshop; then
echo -e "${GREEN}✓ Application restarted${NC}"
else
echo -e "${RED}✗ Application failed to start${NC}"
echo "Check logs: sudo journalctl -u skyartshop.service -n 50"
exit 1
fi
echo ""
# Step 5: Verify
echo -e "${YELLOW}[5/5] Verifying deployment...${NC}"
echo " Waiting for application to be ready..."
sleep 3
# Test website
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost 2>/dev/null)
if [ "$HTTP_CODE" = "200" ]; then
echo -e "${GREEN}✓ Website responding (HTTP $HTTP_CODE)${NC}"
else
echo -e "${RED}✗ Website not responding (HTTP $HTTP_CODE)${NC}"
exit 1
fi
# Test CSS
CSS_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost/assets/css/main.css 2>/dev/null)
if [ "$CSS_CODE" = "200" ]; then
echo -e "${GREEN}✓ CSS loading (HTTP $CSS_CODE)${NC}"
else
echo -e "${RED}✗ CSS not loading (HTTP $CSS_CODE)${NC}"
fi
# Test JS
JS_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost/assets/js/main.js 2>/dev/null)
if [ "$JS_CODE" = "200" ]; then
echo -e "${GREEN}✓ JavaScript loading (HTTP $JS_CODE)${NC}"
else
echo -e "${RED}✗ JavaScript not loading (HTTP $JS_CODE)${NC}"
fi
echo ""
echo "========================================"
echo -e "${GREEN}✓ Deployment Complete!${NC}"
echo "========================================"
echo ""
echo "Website: http://localhost"
echo "Domain: http://skyarts.ddns.net"
echo ""
echo "To view logs: sudo journalctl -u skyartshop.service -f"