Skip to content

πŸš€ Fix GitHub Actions workflows and enhance code quality #6

πŸš€ Fix GitHub Actions workflows and enhance code quality

πŸš€ Fix GitHub Actions workflows and enhance code quality #6

Workflow file for this run

name: Quick Check
on:
push:
branches: [master, develop]
pull_request:
branches: [master, develop]
jobs:
basic-validation:
name: Basic Validation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.1"
tools: composer
- name: Validate composer.json
run: |
echo "## πŸ” Basic Validation Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if composer validate --no-check-all --no-check-lock; then
echo "βœ… composer.json is valid" >> $GITHUB_STEP_SUMMARY
else
echo "❌ composer.json validation failed" >> $GITHUB_STEP_SUMMARY
exit 1
fi
- name: Check PHP syntax
run: |
SYNTAX_ERRORS=0
TOTAL_FILES=0
echo "### PHP Syntax Check" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
for file in $(find src lib -name "*.php" 2>/dev/null || echo ""); do
if [ -f "$file" ]; then
TOTAL_FILES=$((TOTAL_FILES + 1))
if ! php -l "$file" >/dev/null 2>&1; then
echo "❌ Syntax error in: $file" >> $GITHUB_STEP_SUMMARY
SYNTAX_ERRORS=$((SYNTAX_ERRORS + 1))
fi
fi
done
if [ $SYNTAX_ERRORS -eq 0 ]; then
echo "βœ… All $TOTAL_FILES PHP files have valid syntax" >> $GITHUB_STEP_SUMMARY
else
echo "❌ Found $SYNTAX_ERRORS syntax errors in $TOTAL_FILES files" >> $GITHUB_STEP_SUMMARY
exit 1
fi
- name: Check file structure
run: |
echo "" >> $GITHUB_STEP_SUMMARY
echo "### File Structure Check" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
REQUIRED_FILES=("composer.json" "registration.php" "README.md")
MISSING_FILES=()
for file in "${REQUIRED_FILES[@]}"; do
if [ ! -f "$file" ]; then
MISSING_FILES+=("$file")
fi
done
if [ ${#MISSING_FILES[@]} -eq 0 ]; then
echo "βœ… All required files present" >> $GITHUB_STEP_SUMMARY
else
echo "❌ Missing required files:" >> $GITHUB_STEP_SUMMARY
for file in "${MISSING_FILES[@]}"; do
echo " - $file" >> $GITHUB_STEP_SUMMARY
done
exit 1
fi
# Check directories
REQUIRED_DIRS=("src")
MISSING_DIRS=()
for dir in "${REQUIRED_DIRS[@]}"; do
if [ ! -d "$dir" ]; then
MISSING_DIRS+=("$dir")
fi
done
if [ ${#MISSING_DIRS[@]} -eq 0 ]; then
echo "βœ… All required directories present" >> $GITHUB_STEP_SUMMARY
else
echo "❌ Missing required directories:" >> $GITHUB_STEP_SUMMARY
for dir in "${MISSING_DIRS[@]}"; do
echo " - $dir" >> $GITHUB_STEP_SUMMARY
done
exit 1
fi
phpstan-basic:
name: PHPStan Basic Check
runs-on: ubuntu-latest
needs: basic-validation
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.1"
tools: composer
- name: Install PHPStan
run: |
composer global require phpstan/phpstan
mkdir -p /tmp/phpstan
- name: Create basic PHPStan config
run: |
cat > phpstan-basic.neon << 'EOF'
parameters:
level: 1
paths:
- src
- lib
excludePaths:
- */Test/*
- */vendor/*
ignoreErrors:
- '#Class .* not found#'
- '#Interface .* not found#'
reportUnmatchedIgnoredErrors: false
tmpDir: /tmp/phpstan
EOF
- name: Run PHPStan Level 1
run: |
echo "## πŸ” PHPStan Level 1 Analysis" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if ~/.composer/vendor/bin/phpstan analyse --configuration=phpstan-basic.neon --no-progress; then
echo "βœ… PHPStan Level 1 analysis passed" >> $GITHUB_STEP_SUMMARY
else
echo "❌ PHPStan Level 1 analysis failed" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Run locally to see detailed errors:" >> $GITHUB_STEP_SUMMARY
echo '```bash' >> $GITHUB_STEP_SUMMARY
echo 'composer global require phpstan/phpstan' >> $GITHUB_STEP_SUMMARY
echo '~/.composer/vendor/bin/phpstan analyse --level=1 src lib' >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
exit 1
fi
summary:
name: Quick Check Summary
runs-on: ubuntu-latest
needs: [basic-validation, phpstan-basic]
if: always()
steps:
- name: Generate summary
run: |
echo "## πŸ“‹ Quick Check Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Check | Status |" >> $GITHUB_STEP_SUMMARY
echo "|-------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| Basic Validation | ${{ needs.basic-validation.result == 'success' && 'βœ… Pass' || '❌ Fail' }} |" >> $GITHUB_STEP_SUMMARY
echo "| PHPStan Level 1 | ${{ needs.phpstan-basic.result == 'success' && 'βœ… Pass' || '❌ Fail' }} |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [[ "${{ needs.basic-validation.result }}" == "success" && "${{ needs.phpstan-basic.result }}" == "success" ]]; then
echo "### βœ… All Quick Checks Passed!" >> $GITHUB_STEP_SUMMARY
echo "Your code passes basic validation and PHPStan Level 1 analysis." >> $GITHUB_STEP_SUMMARY
echo "This indicates the code structure is sound and ready for more detailed analysis." >> $GITHUB_STEP_SUMMARY
else
echo "### ❌ Some Checks Failed" >> $GITHUB_STEP_SUMMARY
echo "Please fix the failing checks above before proceeding." >> $GITHUB_STEP_SUMMARY
echo "These are basic requirements that must pass for code quality." >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "### πŸš€ Next Steps" >> $GITHUB_STEP_SUMMARY
echo "- Run the full CI workflow for comprehensive testing" >> $GITHUB_STEP_SUMMARY
echo "- Check code quality workflow for detailed analysis" >> $GITHUB_STEP_SUMMARY
echo "- Ensure PHPStan Level 8 compliance for production" >> $GITHUB_STEP_SUMMARY