mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 14:25:02 +00:00
- Update simulation script to use npm install instead of npm ci - Make diagnostic script work without act installation - Add quick reference guide for workflow commands - Ensure validation runs even when act is not available Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
94 lines
2.6 KiB
Bash
Executable File
94 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Diagnose GitHub Actions workflow setup for local execution with act
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
|
|
|
echo "🔍 GitHub Actions Workflow Diagnostics"
|
|
echo "======================================="
|
|
echo
|
|
|
|
# Check if act is installed
|
|
echo "📦 Checking act installation..."
|
|
if ! command -v act &> /dev/null; then
|
|
echo "⚠️ act is not installed (optional)"
|
|
echo " Install with: brew install act"
|
|
ACT_AVAILABLE=false
|
|
else
|
|
echo "✅ act version: $(act --version)"
|
|
ACT_AVAILABLE=true
|
|
fi
|
|
echo
|
|
|
|
# Check Docker only if act is available
|
|
if [ "$ACT_AVAILABLE" = true ]; then
|
|
echo "🐳 Checking Docker..."
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "⚠️ Docker is not installed (optional for act)"
|
|
elif ! docker info &> /dev/null; then
|
|
echo "⚠️ Docker daemon is not running (optional for act)"
|
|
else
|
|
echo "✅ Docker is running"
|
|
fi
|
|
echo
|
|
fi
|
|
|
|
# List workflows
|
|
echo "📋 Available workflows in $PROJECT_ROOT/.github/workflows:"
|
|
if [ -d "$PROJECT_ROOT/.github/workflows" ]; then
|
|
ls -1 "$PROJECT_ROOT/.github/workflows"/*.yml 2>/dev/null | while read -r workflow; do
|
|
echo " - $(basename "$workflow")"
|
|
done
|
|
else
|
|
echo "❌ No .github/workflows directory found"
|
|
exit 1
|
|
fi
|
|
echo
|
|
|
|
# List jobs in main CI workflow
|
|
if [ "$ACT_AVAILABLE" = true ]; then
|
|
echo "🏗️ Jobs in ci/ci.yml:"
|
|
if [ -f "$PROJECT_ROOT/.github/workflows/ci/ci.yml" ]; then
|
|
act -l -W "$PROJECT_ROOT/.github/workflows/ci/ci.yml" 2>/dev/null || echo " (Failed to parse workflow)"
|
|
else
|
|
echo "❌ ci/ci.yml not found"
|
|
fi
|
|
echo
|
|
fi
|
|
|
|
# Check for .actrc or .secrets
|
|
echo "🔐 Checking for act configuration..."
|
|
if [ -f "$PROJECT_ROOT/.actrc" ]; then
|
|
echo "✅ Found .actrc"
|
|
else
|
|
echo "⚠️ No .actrc found (optional)"
|
|
fi
|
|
|
|
if [ -f "$PROJECT_ROOT/.secrets" ]; then
|
|
echo "✅ Found .secrets"
|
|
else
|
|
echo "⚠️ No .secrets found (optional)"
|
|
fi
|
|
echo
|
|
|
|
echo "✅ Diagnostics complete!"
|
|
echo
|
|
|
|
# Run workflow validation
|
|
echo "🔍 Running workflow validation..."
|
|
if [ -f "$SCRIPT_DIR/validate-workflows.py" ]; then
|
|
python3 "$SCRIPT_DIR/validate-workflows.py"
|
|
else
|
|
echo "⚠️ validate-workflows.py not found, skipping validation"
|
|
fi
|
|
echo
|
|
|
|
echo "💡 Tips:"
|
|
echo " - Validate workflows: npm run act:validate"
|
|
echo " - Simulate locally: npm run simulate:lint"
|
|
echo " - Run specific job: npm run act:lint (requires act)"
|
|
echo " - List all jobs: act -l (requires act)"
|
|
echo " - Run with specific platform: act -P ubuntu-latest=catthehacker/ubuntu:act-latest"
|