name: Deployment Status Check on: workflow_dispatch: schedule: # Check deployment status every 4 hours - cron: '0 */4 * * *' jobs: check-deployment-status: name: Check All Environment Status runs-on: ubuntu-latest steps: - name: Check Development Status run: | echo "๐Ÿงช Checking Development Environment..." DEV_URL="https://${{ secrets.DEV_CANONICAL_DOMAIN }}" DEV_STATUS=$(curl -s -o /dev/null -w "%{http_code}" -L --max-time 30 "$DEV_URL" || echo "000") DEV_VERSION=$(curl -s -L --max-time 30 "$DEV_URL" | grep -o '[^<]*' | sed 's/\(.*\)<\/title>/\1/' || echo "Unknown") echo "Development Status: HTTP $DEV_STATUS" echo "Development Version: $DEV_VERSION" echo "DEV_STATUS=$DEV_STATUS" >> $GITHUB_ENV echo "DEV_VERSION=$DEV_VERSION" >> $GITHUB_ENV - name: Check Staging Status run: | echo "๐ŸŽญ Checking Staging Environment..." STAGING_URL="https://${{ secrets.STAGING_CANONICAL_DOMAIN }}" STAGING_STATUS=$(curl -s -o /dev/null -w "%{http_code}" -L --max-time 30 "$STAGING_URL" || echo "000") STAGING_VERSION=$(curl -s -L --max-time 30 "$STAGING_URL" | grep -o '<title>[^<]*' | sed 's/\(.*\)<\/title>/\1/' || echo "Unknown") echo "Staging Status: HTTP $STAGING_STATUS" echo "Staging Version: $STAGING_VERSION" echo "STAGING_STATUS=$STAGING_STATUS" >> $GITHUB_ENV echo "STAGING_VERSION=$STAGING_VERSION" >> $GITHUB_ENV - name: Check Production Status run: | echo "๐Ÿš€ Checking Production Environment..." PROD_URL="https://${{ secrets.PROD_CANONICAL_DOMAIN }}" PROD_STATUS=$(curl -s -o /dev/null -w "%{http_code}" -L --max-time 30 "$PROD_URL" || echo "000") PROD_VERSION=$(curl -s -L --max-time 30 "$PROD_URL" | grep -o '<title>[^<]*' | sed 's/\(.*\)<\/title>/\1/' || echo "Unknown") echo "Production Status: HTTP $PROD_STATUS" echo "Production Version: $PROD_VERSION" echo "PROD_STATUS=$PROD_STATUS" >> $GITHUB_ENV echo "PROD_VERSION=$PROD_VERSION" >> $GITHUB_ENV - name: Create Status Summary run: | echo "## ๐ŸŒ Deployment Status Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "| Environment | Status | Version | URL |" >> $GITHUB_STEP_SUMMARY echo "|-------------|--------|---------|-----|" >> $GITHUB_STEP_SUMMARY # Development status if [ "$DEV_STATUS" = "200" ]; then DEV_ICON="โœ…" else DEV_ICON="โŒ" fi echo "| ๐Ÿงช Development | $DEV_ICON HTTP $DEV_STATUS | $DEV_VERSION | https://${{ secrets.DEV_CANONICAL_DOMAIN }} |" >> $GITHUB_STEP_SUMMARY # Staging status if [ "$STAGING_STATUS" = "200" ]; then STAGING_ICON="โœ…" else STAGING_ICON="โŒ" fi echo "| ๐ŸŽญ Staging | $STAGING_ICON HTTP $STAGING_STATUS | $STAGING_VERSION | https://${{ secrets.STAGING_CANONICAL_DOMAIN }} |" >> $GITHUB_STEP_SUMMARY # Production status if [ "$PROD_STATUS" = "200" ]; then PROD_ICON="โœ…" else PROD_ICON="โŒ" fi echo "| ๐Ÿš€ Production | $PROD_ICON HTTP $PROD_STATUS | $PROD_VERSION | https://${{ secrets.PROD_CANONICAL_DOMAIN }} |" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "### ๐Ÿ”ง Emergency Actions Available" >> $GITHUB_STEP_SUMMARY echo "- **Emergency Deploy**: Run 'Deploy to Production' workflow (requires typing 'DEPLOY')" >> $GITHUB_STEP_SUMMARY echo "- **Force Promotion**: Run 'Auto-Promote to Production' workflow" >> $GITHUB_STEP_SUMMARY echo "- **Test Environment**: Run 'Smoke Tests' workflow on any environment" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Note**: Pipeline is fully automatic - manual actions only for emergencies" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "๐Ÿ“… **Generated**: $(date -u '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY