.github/workflows/cgl.yaml
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