upskill-event-manager/scripts/download-staging-plugins.sh
ben c6b871c946
Some checks are pending
HVAC Plugin CI/CD Pipeline / Code Quality & Standards (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Unit Tests (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Security Analysis (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Integration Tests (push) Waiting to run
HVAC Plugin CI/CD Pipeline / Deploy to Staging (push) Blocked by required conditions
HVAC Plugin CI/CD Pipeline / Deploy to Production (push) Blocked by required conditions
HVAC Plugin CI/CD Pipeline / Notification (push) Blocked by required conditions
Security Monitoring & Compliance / Security Compliance Validation (push) Waiting to run
Security Monitoring & Compliance / Dependency Vulnerability Scan (push) Waiting to run
Security Monitoring & Compliance / Secrets & Credential Scan (push) Waiting to run
Security Monitoring & Compliance / WordPress Security Analysis (push) Waiting to run
Security Monitoring & Compliance / Static Code Security Analysis (push) Waiting to run
Security Monitoring & Compliance / Security Summary Report (push) Blocked by required conditions
Security Monitoring & Compliance / Security Team Notification (push) Blocked by required conditions
feat: enhance Docker testing infrastructure and modernize test framework
- Add Docker plugin management script for staging integration
- Implement Docker environment configuration template and verification
- Add comprehensive Docker environment status documentation
- Enhance master trainer test suite with certificate diagnostics and profile management
- Extend test framework page objects with new navigation methods
- Update gitignore patterns to prevent temporary test files from commits
- Configure Claude permissions for Docker test execution

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 19:03:17 -03:00

185 lines
No EOL
6.5 KiB
Bash
Executable file

#!/bin/bash
# Download Staging Plugins Script
# Downloads all plugins from staging server and copies them to Docker development environment
set -e
# Load environment variables
if [ -f .env ]; then
source .env
else
echo "Error: .env file not found"
exit 1
fi
echo "=== Downloading Staging Plugins for Development Environment ==="
echo "Staging Server: $UPSKILL_STAGING_IP"
echo "Docker Environment: http://localhost:8080"
echo "================================================================"
# Create temporary directory for plugin downloads
TEMP_PLUGINS_DIR="/tmp/staging-plugins"
rm -rf "$TEMP_PLUGINS_DIR"
mkdir -p "$TEMP_PLUGINS_DIR"
echo "Step 1: Downloading plugin files from staging server..."
# Download all plugins from staging wp-content/plugins directory
echo "Downloading plugins directory..."
sshpass -p "$UPSKILL_STAGING_PASS" scp -r -o StrictHostKeyChecking=no \
"$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP:$UPSKILL_STAGING_PATH/wp-content/plugins" \
"$TEMP_PLUGINS_DIR/"
if [ $? -ne 0 ]; then
echo "Error: Failed to download plugins from staging"
exit 1
fi
echo "✅ Successfully downloaded plugins from staging"
# List downloaded plugins
echo ""
echo "Downloaded plugins:"
ls -la "$TEMP_PLUGINS_DIR/plugins" | grep "^d" | awk '{print "- " $9}' | grep -v "^\- \.$" | grep -v "^\- \.\.$"
echo ""
echo "Step 2: Waiting for WordPress container to be ready..."
# Wait for WordPress container to be ready
max_attempts=30
attempt=1
while [ $attempt -le $max_attempts ]; do
if curl -s http://localhost:8080 > /dev/null 2>&1; then
echo "✅ WordPress container is ready"
break
else
echo "Waiting for WordPress container... ($attempt/$max_attempts)"
sleep 10
((attempt++))
fi
done
if [ $attempt -gt $max_attempts ]; then
echo "❌ WordPress container failed to start"
exit 1
fi
echo ""
echo "Step 3: Copying plugins to Docker volume..."
# Get WordPress container volume mount path
CONTAINER_ID=$(docker ps -qf "name=hvac-wordpress-test")
if [ -z "$CONTAINER_ID" ]; then
echo "Error: WordPress container not found"
exit 1
fi
echo "WordPress container ID: $CONTAINER_ID"
# Copy plugins to container
echo "Copying plugins to container..."
for plugin_dir in "$TEMP_PLUGINS_DIR/plugins"/*; do
if [ -d "$plugin_dir" ]; then
plugin_name=$(basename "$plugin_dir")
if [ "$plugin_name" != "hvac-community-events" ]; then # Don't overwrite our development plugin
echo "Copying plugin: $plugin_name"
docker cp "$plugin_dir" "$CONTAINER_ID:/var/www/html/wp-content/plugins/"
else
echo "Skipping hvac-community-events (using development version)"
fi
fi
done
echo "✅ Plugins copied to Docker container"
echo ""
echo "Step 4: Setting correct permissions in container..."
# Set correct permissions
docker exec "$CONTAINER_ID" chown -R www-data:www-data /var/www/html/wp-content/plugins/
docker exec "$CONTAINER_ID" find /var/www/html/wp-content/plugins/ -type d -exec chmod 755 {} \;
docker exec "$CONTAINER_ID" find /var/www/html/wp-content/plugins/ -type f -exec chmod 644 {} \;
echo "✅ Permissions set correctly"
echo ""
echo "Step 5: Installing WP-CLI and activating plugins..."
# Install WP-CLI in container if not present
docker exec "$CONTAINER_ID" bash -c "
if ! command -v wp &> /dev/null; then
echo 'Installing WP-CLI...'
curl -O https://raw.githubusercontent.com/wp-cli/wp-cli/v2.8.1/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
fi
"
# Wait for WordPress installation to complete
echo "Waiting for WordPress installation to complete..."
sleep 30
# Get list of plugins to activate from staging
echo "Getting list of active plugins from staging..."
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no \
"$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" \
"cd $UPSKILL_STAGING_PATH && wp plugin list --status=active --field=name" > "$TEMP_PLUGINS_DIR/active_plugins.txt"
if [ $? -eq 0 ]; then
echo "✅ Retrieved active plugins list from staging"
echo ""
echo "Active plugins on staging:"
cat "$TEMP_PLUGINS_DIR/active_plugins.txt" | sed 's/^/- /'
echo ""
echo "Activating plugins in development environment..."
# Activate each plugin
while IFS= read -r plugin_name; do
if [ -n "$plugin_name" ] && [ "$plugin_name" != "hvac-community-events" ]; then
echo "Activating plugin: $plugin_name"
docker exec "$CONTAINER_ID" wp plugin activate "$plugin_name" --allow-root --path=/var/www/html || echo "Warning: Failed to activate $plugin_name"
fi
done < "$TEMP_PLUGINS_DIR/active_plugins.txt"
# Always activate our development plugin last
echo "Activating hvac-community-events plugin..."
docker exec "$CONTAINER_ID" wp plugin activate hvac-community-events --allow-root --path=/var/www/html || echo "Warning: Failed to activate hvac-community-events"
else
echo "Warning: Could not retrieve active plugins list from staging"
echo "Manually activating critical plugins..."
# Manually activate critical plugins
critical_plugins=("the-events-calendar" "event-tickets" "spectra-pro")
for plugin in "${critical_plugins[@]}"; do
echo "Activating critical plugin: $plugin"
docker exec "$CONTAINER_ID" wp plugin activate "$plugin" --allow-root --path=/var/www/html 2>/dev/null || echo "Plugin $plugin not found or failed to activate"
done
# Activate our development plugin
echo "Activating hvac-community-events plugin..."
docker exec "$CONTAINER_ID" wp plugin activate hvac-community-events --allow-root --path=/var/www/html || echo "Warning: Failed to activate hvac-community-events"
fi
echo ""
echo "Step 6: Verifying plugin installation..."
# List active plugins in development environment
echo "Active plugins in development environment:"
docker exec "$CONTAINER_ID" wp plugin list --status=active --allow-root --path=/var/www/html --format=table
echo ""
echo "Step 7: Clean up temporary files..."
rm -rf "$TEMP_PLUGINS_DIR"
echo "✅ Temporary files cleaned up"
echo ""
echo "🎉 SUCCESS: Staging plugins successfully downloaded and installed!"
echo ""
echo "Next steps:"
echo "1. Run: docker exec hvac-wordpress-test wp plugin list --status=active --allow-root --path=/var/www/html"
echo "2. Access development environment: http://localhost:8080"
echo "3. Run comprehensive seeding: ./seed-data.sh dev"
echo "4. Run tests: HEADLESS=true BASE_URL=http://localhost:8080 node test-master-trainer-e2e.js"