name: CI on: push: branches: [main] pull_request: branches: [main] jobs: quality: name: Quality runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.4' extensions: curl, json, mbstring tools: composer:v2 coverage: none - name: Cache Composer uses: actions/cache@v4 with: path: ~/.cache/composer key: composer-${{ hashFiles('framework/php/composer.json') }} - name: Install bundle dependencies working-directory: framework/php run: composer install --no-interaction --prefer-dist - name: PHPStan working-directory: framework/php run: composer phpstan - name: php-cs-fixer (check) working-directory: framework/php run: composer cs:check - name: PHPUnit working-directory: framework/php run: composer phpunit - name: Setup Python (for install-qt-action's aqtinstall) uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install build tools run: sudo apt-get install -y cmake ninja-build rsync - name: Setup Qt 6 uses: jurplel/install-qt-action@v4 with: version: '6.5.*' dir: ${{ github.workspace }}/qt cache: true setup-python: false - name: Cache CMake build uses: actions/cache@v4 with: path: framework/skeleton/build key: cmake-${{ runner.os }}-${{ hashFiles('framework/qml/**', 'framework/skeleton/qml/**') }} - name: Build QML module + skeleton working-directory: framework/skeleton run: | cmake -S qml -B build/qml cmake --build build/qml --parallel - name: qmllint working-directory: framework/skeleton run: cmake --build build/qml --target all_qmllint - name: QML unit tests (qmltestrunner via Qt::QuickTest) working-directory: framework/qml run: | cmake -S . -B build-tests -DBUILD_TESTING=ON cmake --build build-tests --target qml_unit_tests --parallel ctest --test-dir build-tests --output-on-failure -R qml_unit_tests - name: Install FrankenPHP run: | curl -fsSL -o /usr/local/bin/frankenphp \ https://github.com/php/frankenphp/releases/download/v1.12.2/frankenphp-linux-x86_64 chmod +x /usr/local/bin/frankenphp - name: Maker-output snapshot test run: framework/php/tests/snapshot/run.sh - name: Build the todo example working-directory: examples/todo run: | make install make build - name: Bridge-integration test (HTTP/SSE round-trip + crash-recover) working-directory: examples/todo run: ./tests/integration.sh - name: Bundled-mode supervisor integration test working-directory: examples/todo run: make integration-bundled