π Fix GitHub Actions workflows and enhance code quality #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |