eliashaeussler/typo3-warming

View on GitHub
.github/workflows/cgl.yaml

Summary

Maintainability
Test Coverage
name: CGL
on:
  push:
    branches:
      - main
      - 'renovate/**'
  pull_request:
    branches:
      - main

jobs:
  cgl:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # Prepare environment
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.3
          tools: composer:v2, composer-require-checker, composer-unused, cs2pr
          coverage: none
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
          cache-dependency-path: 'Resources/Private/Frontend/package-lock.json'

      # Validation
      - name: Validate composer.json
        run: composer validate

      # Install dependencies
      - name: Install Composer dependencies
        uses: ramsey/composer-install@v3
        with:
          composer-options: --no-plugins --no-scripts

      # Check Composer dependencies
      - name: Check dependencies
        run: composer-require-checker check --config-file Tests/CGL/dependency-checker.json
      - name: Re-install Composer dependencies
        uses: ramsey/composer-install@v3
      - name: Check for unused dependencies
        run: composer-unused

      # Linting
      - name: Lint composer.json
        run: composer cgl lint:composer
      - name: Lint Editorconfig
        run: composer cgl lint:editorconfig
      - name: Lint PHP
        run: composer cgl lint:php -- --format=checkstyle | cs2pr
      - name: Lint TypoScript
        run: composer cgl lint:typoscript

      # SCA
      - name: SCA PHP
        run: composer cgl sca:php -- --error-format github

      # Install Frontend dependencies
      - name: Install Frontend dependencies
        run: npm --prefix Resources/Private/Frontend ci

      # Check asset integrity
      - name: Check Frontend asset integrity
        run: |
          npm --prefix Resources/Private/Frontend run build
          git add Resources/Public
          git diff --exit-code --staged Resources/Public

      # Frontend linting
      - name: Lint SCSS
        run: npm --prefix Resources/Private/Frontend run lint:scss
      - name: Lint TypeScript
        run: npm --prefix Resources/Private/Frontend run lint:ts

      # Migration
      - name: Rector migration
        run: composer cgl migration:rector -- --dry-run

      # Documentation
      - name: Check documentation build
        run: |
          mkdir -p .Build/docs
          composer docs:build -- --no-progress --fail-on-log