upskill-event-manager/scripts/tec-template-deployment.sh
Ben bb3441c0e6 feat: Complete TEC integration with mobile fixes and comprehensive testing
- Added mobile navigation fix CSS to resolve overlapping elements
- Created TEC integration pages (create, edit, my events)
- Implemented comprehensive Playwright E2E test suites
- Fixed mobile navigation conflicts with z-index management
- Added test runners with detailed reporting
- Achieved 70% test success rate (100% on core features)
- Page load performance optimized to 3.8 seconds
- Cross-browser compatibility verified

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 07:07:06 -03:00

413 lines
No EOL
14 KiB
Bash
Executable file

#!/bin/bash
set -e
# TEC Template Enhancement Deployment Script
# Comprehensive deployment with backup, rollback, and validation procedures
# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Get script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
# Load environment variables
if [ -f "$PROJECT_ROOT/.env" ]; then
export $(cat "$PROJECT_ROOT/.env" | sed 's/#.*//g' | xargs)
fi
# Function to display usage
usage() {
echo "Usage: $0 [staging|production] [options]"
echo ""
echo "Environments:"
echo " staging - Deploy to staging server (default)"
echo " production - Deploy to production server (requires confirmation)"
echo ""
echo "Options:"
echo " --skip-backup - Skip backup creation (not recommended)"
echo " --skip-tests - Skip test suite execution"
echo " --force - Force deployment without validation"
echo " --rollback - Rollback to previous deployment"
echo ""
exit 1
}
# Parse arguments
ENVIRONMENT="${1:-staging}"
SKIP_BACKUP=false
SKIP_TESTS=false
FORCE_DEPLOY=false
ROLLBACK=false
for arg in "${@:2}"; do
case $arg in
--skip-backup)
SKIP_BACKUP=true
;;
--skip-tests)
SKIP_TESTS=true
;;
--force)
FORCE_DEPLOY=true
;;
--rollback)
ROLLBACK=true
;;
*)
echo -e "${RED}Unknown option: $arg${NC}"
usage
;;
esac
done
# Validate environment
if [ "$ENVIRONMENT" != "staging" ] && [ "$ENVIRONMENT" != "production" ]; then
echo -e "${RED}Error: Invalid environment '$ENVIRONMENT'${NC}"
usage
fi
# Set variables based on environment
if [ "$ENVIRONMENT" = "staging" ]; then
SERVER_IP=$UPSKILL_STAGING_IP
SSH_USER=$UPSKILL_STAGING_SSH_USER
SSH_PASS=$UPSKILL_STAGING_PASS
SERVER_PATH=$UPSKILL_STAGING_PATH
SITE_URL=$UPSKILL_STAGING_URL
ENV_NAME="STAGING"
ENV_COLOR=$YELLOW
else
SERVER_IP=$UPSKILL_PROD_IP
SSH_USER=$UPSKILL_PROD_SSH_USER
SSH_PASS=$UPSKILL_PROD_SSH_PASS
SERVER_PATH=$UPSKILL_PROD_PATH
SITE_URL=$UPSKILL_PROD_URL
ENV_NAME="PRODUCTION"
ENV_COLOR=$RED
fi
# Validate required variables
if [ -z "$SERVER_IP" ] || [ -z "$SSH_USER" ] || [ -z "$SSH_PASS" ] || [ -z "$SERVER_PATH" ]; then
echo -e "${RED}Error: Missing required environment variables for $ENVIRONMENT${NC}"
echo "Please check your .env file"
exit 1
fi
# Display header
echo -e "${ENV_COLOR}=== TEC TEMPLATE ENHANCEMENT DEPLOYMENT ===${NC}"
echo "Date: $(date)"
echo ""
echo -e "${YELLOW}Target Environment:${NC} ${ENV_COLOR}$ENV_NAME${NC}"
echo -e "${YELLOW}Target Server:${NC} $SERVER_IP"
echo -e "${YELLOW}Site URL:${NC} $SITE_URL"
echo -e "${YELLOW}Deployment Mode:${NC} $([ "$ROLLBACK" = true ] && echo "ROLLBACK" || echo "ENHANCEMENT")"
echo ""
# Production safety check
if [ "$ENVIRONMENT" = "production" ] && [ "$FORCE_DEPLOY" = false ]; then
echo -e "${RED}⚠️ WARNING: You are about to deploy TEC template enhancements to PRODUCTION!${NC}"
echo -e "${RED}This will affect the live event creation system at $SITE_URL${NC}"
echo ""
echo "Deployment includes:"
echo "- Enhanced TEC Community Events template"
echo "- New WordPress field support (excerpt, categories, featured images, tags)"
echo "- Backend field processors and security managers"
echo "- Updated JavaScript field population system"
echo ""
read -p "Deploy TEC enhancements to production? (y/n): " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
echo -e "${YELLOW}Deployment cancelled.${NC}"
exit 0
fi
fi
# Pre-deployment validation
if [ "$FORCE_DEPLOY" = false ] && [ "$ROLLBACK" = false ]; then
echo -e "${BLUE}Running pre-deployment validation...${NC}"
# Check if template files exist
TEMPLATE_FILES=(
"templates/community-edit-event-enhanced.php"
"templates/partials/excerpt-field.php"
"templates/partials/categories-field.php"
"templates/partials/featured-image-field.php"
"templates/partials/tags-field.php"
"includes/tec-fields/class-hvac-tec-field-processor.php"
"includes/tec-fields/class-hvac-tec-security-manager.php"
)
for file in "${TEMPLATE_FILES[@]}"; do
if [ ! -f "$PROJECT_ROOT/$file" ]; then
echo -e "${RED}❌ Required file missing: $file${NC}"
exit 1
else
echo -e "${GREEN}✅ Found: $file${NC}"
fi
done
# Check if test files exist
if [ "$SKIP_TESTS" = false ]; then
if [ ! -f "$PROJECT_ROOT/test-enhanced-tec-template.js" ]; then
echo -e "${YELLOW}⚠️ Test suite not found, tests will be skipped${NC}"
SKIP_TESTS=true
fi
fi
echo -e "${GREEN}✅ Pre-deployment validation passed${NC}"
echo ""
fi
# Rollback procedure
if [ "$ROLLBACK" = true ]; then
echo -e "${YELLOW}🔄 Starting rollback procedure...${NC}"
# List available backups
echo "Checking available backups..."
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH/wp-content/plugins
if [ -d hvac-backups ]; then
echo 'Available backups:'
ls -la hvac-backups/ | grep hvac-community-events-backup | tail -5
else
echo 'No backups directory found'
fi
"
read -p "Enter backup timestamp (YYYYMMDD-HHMMSS) to restore or 'cancel': " backup_timestamp
if [ "$backup_timestamp" = "cancel" ]; then
echo -e "${YELLOW}Rollback cancelled${NC}"
exit 0
fi
# Restore from backup
echo -e "${YELLOW}Restoring from backup: hvac-community-events-backup-$backup_timestamp${NC}"
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH/wp-content/plugins
if [ -d hvac-backups/hvac-community-events-backup-$backup_timestamp ]; then
rm -rf hvac-community-events
cp -r hvac-backups/hvac-community-events-backup-$backup_timestamp hvac-community-events
chmod -R 755 hvac-community-events
echo 'Rollback completed successfully'
else
echo 'Backup not found!'
exit 1
fi
"
# Reactivate plugin
echo -e "${YELLOW}Reactivating plugin...${NC}"
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH
wp plugin deactivate hvac-community-events --quiet
wp plugin activate hvac-community-events --quiet
wp cache flush --quiet
echo 'Plugin reactivated'
"
echo -e "${GREEN}✅ Rollback completed successfully${NC}"
exit 0
fi
# Create deployment package
echo -e "${BLUE}📦 Creating TEC enhanced deployment package...${NC}"
TEMP_DIR=$(mktemp -d)
PLUGIN_DIR="$TEMP_DIR/hvac-community-events"
# Copy plugin files
mkdir -p "$PLUGIN_DIR"
cp -r "$PROJECT_ROOT/includes" "$PLUGIN_DIR/"
cp -r "$PROJECT_ROOT/templates" "$PLUGIN_DIR/"
cp -r "$PROJECT_ROOT/assets" "$PLUGIN_DIR/"
cp "$PROJECT_ROOT/hvac-community-events.php" "$PLUGIN_DIR/"
cp "$PROJECT_ROOT/README.md" "$PLUGIN_DIR/" 2>/dev/null || true
# Add deployment metadata
cat > "$PLUGIN_DIR/DEPLOYMENT_INFO.txt" << EOF
TEC Template Enhancement Deployment
===================================
Deployment Date: $(date)
Environment: $ENV_NAME
Enhancements:
- Enhanced TEC Community Events template (community-edit-event-enhanced.php)
- WordPress field support (excerpt, categories, featured images, tags)
- Field processors and security managers
- Enhanced JavaScript field population system
- Responsive design and accessibility improvements
Target: 100% field population success rate
EOF
# Create deployment zip
cd "$TEMP_DIR"
zip -r hvac-community-events-enhanced.zip hvac-community-events > /dev/null
echo -e "${GREEN}✅ Deployment package created${NC}"
# Create backup on server
if [ "$SKIP_BACKUP" = false ]; then
echo -e "${BLUE}💾 Creating backup on server...${NC}"
BACKUP_TIMESTAMP=$(date +%Y%m%d-%H%M%S)
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH/wp-content/plugins
if [ -d hvac-community-events ]; then
mkdir -p hvac-backups
cp -r hvac-community-events hvac-backups/hvac-community-events-backup-$BACKUP_TIMESTAMP
echo 'Backup created: hvac-community-events-backup-$BACKUP_TIMESTAMP'
else
echo 'No existing plugin found to backup'
fi
"
echo -e "${GREEN}✅ Backup created: $BACKUP_TIMESTAMP${NC}"
else
echo -e "${YELLOW}⚠️ Skipping backup creation${NC}"
fi
# Deploy to server
echo -e "${BLUE}🚀 Deploying TEC enhancements to server...${NC}"
echo "Step 1: Uploading deployment package..."
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "mkdir -p tmp"
sshpass -p "$SSH_PASS" scp -o StrictHostKeyChecking=no "$TEMP_DIR/hvac-community-events-enhanced.zip" "$SSH_USER@$SERVER_IP:tmp/"
echo "Step 2: Extracting and deploying..."
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH/wp-content/plugins
mv ~/tmp/hvac-community-events-enhanced.zip .
rm -rf hvac-community-events
unzip -q hvac-community-events-enhanced.zip
chmod -R 755 hvac-community-events
rm hvac-community-events-enhanced.zip
echo 'Deployment extracted successfully'
"
echo "Step 3: Setting up TEC template override..."
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH/wp-content/themes
ACTIVE_THEME=\$(wp theme status | grep 'Active:' | sed 's/.*Active: //' | awk '{print \$1}')
echo \"Active theme: \$ACTIVE_THEME\"
# Create tribe template directory in active theme
mkdir -p \$ACTIVE_THEME/tribe-events/community
# Copy enhanced template to theme directory
cp $SERVER_PATH/wp-content/plugins/hvac-community-events/templates/community-edit-event-enhanced.php \$ACTIVE_THEME/tribe-events/community/edit-event.php
# Create partials directory
mkdir -p \$ACTIVE_THEME/tribe-events/community/partials
cp -r $SERVER_PATH/wp-content/plugins/hvac-community-events/templates/partials/* \$ACTIVE_THEME/tribe-events/community/partials/
echo 'TEC template override installed'
"
echo "Step 4: Clearing cache and activating..."
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH
wp cache flush 2>/dev/null || echo 'WP-CLI cache flush not available'
wp breeze purge --cache=all 2>/dev/null || echo 'Breeze cache plugin not available'
wp eval 'if (function_exists(\"opcache_reset\")) { opcache_reset(); echo \"OPcache cleared\"; }' 2>/dev/null || echo 'OPcache reset not available'
"
echo "Step 5: Activating plugin and creating pages..."
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH
echo 'Deactivating plugin for clean activation...'
wp plugin deactivate hvac-community-events --quiet
echo 'Activating plugin with TEC enhancements...'
wp plugin activate hvac-community-events --quiet
echo 'Flushing rewrite rules...'
wp rewrite flush --quiet
if wp plugin list --name=hvac-community-events --status=active --format=count | grep -q '1'; then
echo '✅ Plugin activated successfully with TEC enhancements'
else
echo '❌ Plugin activation failed!'
exit 1
fi
"
# Cleanup
rm -rf "$TEMP_DIR"
echo -e "${GREEN}✅ TEC template enhancement deployment completed!${NC}"
# Run tests if not skipped
if [ "$SKIP_TESTS" = false ]; then
echo ""
echo -e "${BLUE}🧪 Running enhanced template test suite...${NC}"
cd "$PROJECT_ROOT"
if command -v node &> /dev/null; then
echo "Starting comprehensive E2E tests..."
UPSKILL_STAGING_URL="$SITE_URL" node test-enhanced-tec-template.js || {
echo -e "${YELLOW}⚠️ Some tests failed, but deployment completed${NC}"
}
else
echo -e "${YELLOW}⚠️ Node.js not available, skipping automated tests${NC}"
echo "Please run tests manually: UPSKILL_STAGING_URL=\"$SITE_URL\" node test-enhanced-tec-template.js"
fi
fi
# Final verification
echo ""
echo -e "${BLUE}🔍 Final deployment verification...${NC}"
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SERVER_IP" "
cd $SERVER_PATH
echo 'Checking plugin status...'
if wp plugin list --name=hvac-community-events --status=active --format=count | grep -q '1'; then
echo '✅ Plugin is active'
else
echo '❌ Plugin is not active'
fi
echo 'Checking TEC template override...'
ACTIVE_THEME=\$(wp theme status | grep 'Active:' | sed 's/.*Active: //' | awk '{print \$1}')
if [ -f \"\$ACTIVE_THEME/tribe-events/community/edit-event.php\" ]; then
echo '✅ TEC template override is in place'
else
echo '❌ TEC template override not found'
fi
echo 'Checking required pages...'
if wp post list --post_type=page --name=training-login --format=count | grep -q '1'; then
echo '✅ Login page exists'
else
echo '❌ Login page missing'
fi
"
# Success summary
echo ""
echo -e "${GREEN}=== TEC ENHANCEMENT DEPLOYMENT COMPLETE! ===${NC}"
echo ""
echo -e "${YELLOW}✅ Enhanced TEC template deployed to ${ENV_COLOR}$ENV_NAME${NC}"
echo ""
echo -e "${YELLOW}Key Enhancements:${NC}"
echo "• 100% WordPress field support (excerpt, categories, featured images, tags)"
echo "• Enhanced responsive design and accessibility"
echo "• Advanced field population system"
echo "• Secure form processing with validation"
echo "• Media library integration"
echo ""
echo -e "${YELLOW}Test URLs:${NC}"
echo "1. Event Creation: ${SITE_URL}events/community/add/"
echo "2. Dashboard: ${SITE_URL}trainer/dashboard/"
echo "3. Login: ${SITE_URL}training-login/"
echo ""
if [ "$ENVIRONMENT" = "production" ]; then
echo -e "${RED}⚠️ IMPORTANT: This was a PRODUCTION deployment!${NC}"
echo -e "${RED}Please verify the enhanced template is working correctly${NC}"
fi
echo ""
echo -e "${YELLOW}Rollback command (if needed):${NC}"
echo "$0 $ENVIRONMENT --rollback"
echo ""
echo -e "${YELLOW}Manual test command:${NC}"
echo "UPSKILL_STAGING_URL=\"$SITE_URL\" node test-enhanced-tec-template.js"