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
- 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>
185 lines
No EOL
6.5 KiB
Bash
Executable file
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" |