name: Deploy Apartment Dashboard on: push: branches: [ main ] workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' - name: Install dependencies run: npm ci - name: Build application run: npm run build - name: Build Docker image run: | docker build -t apartment-dashboard:${{ github.sha }} . docker tag apartment-dashboard:${{ github.sha }} apartment-dashboard:latest - name: Deploy to server run: | # Copy files to deployment directory sudo mkdir -p /media/stephen/Storage_Linux/infrastructure/services/apartments sudo cp -r . /media/stephen/Storage_Linux/infrastructure/services/apartments/ # Navigate to deployment directory cd /media/stephen/Storage_Linux/infrastructure/services/apartments # Stop existing container if running sudo docker compose down || true # Start new container sudo docker compose up -d # Clean up old images sudo docker image prune -f - name: Verify deployment run: | # Wait a moment for container to start sleep 10 # Check if container is running cd /media/stephen/Storage_Linux/infrastructure/services/apartments sudo docker compose ps # Test endpoint (optional) curl -f http://localhost:80 || echo "Container may still be starting..."