name: "build" on: pull_request: paths-ignore: - ".docs/**" push: branches: - "*" schedule: - cron: "0 8 * * 1" # At 08:00 on Monday env: extensions: "json" cacheVersion: "1" composerVersion: "v2" composerInstall: "composer install" jobs: qa: name: "Quality Assurance" runs-on: "${{ matrix.operating-system }}" strategy: matrix: php-versions: [ "8.0" ] operating-system: [ "ubuntu-latest" ] fail-fast: false steps: - name: "Checkout" uses: "actions/checkout@v2" - name: "Setup PHP cache environment" id: "extcache" uses: "shivammathur/cache-extensions@v1" with: php-version: "${{ matrix.php-versions }}" extensions: "${{ env.extensions }}" key: "${{ env.cacheVersion }}" - name: "Cache PHP extensions" uses: "actions/cache@v2" with: path: "${{ steps.extcache.outputs.dir }}" key: "${{ steps.extcache.outputs.key }}" restore-keys: "${{ steps.extcache.outputs.key }}" - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-versions }}" extensions: "${{ env.extensions }}" tools: "composer:${{ env.composerVersion }} " - name: "Setup problem matchers for PHP" run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"' - name: "Get Composer cache directory" id: "composercache" run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"' - name: "Cache PHP dependencies" uses: "actions/cache@v2" with: path: "${{ steps.composercache.outputs.dir }}" key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}" restore-keys: "${{ runner.os }}-composer-" - name: "Validate Composer" run: "composer validate" - name: "Install dependencies" run: "${{ env.composerInstall }}" - name: "Coding Standard" run: "make cs" static-analysis: name: "Static analysis" runs-on: "${{ matrix.operating-system }}" strategy: matrix: php-versions: [ "8.0" ] operating-system: [ "ubuntu-latest" ] fail-fast: false steps: - name: "Checkout" uses: "actions/checkout@v2" - name: "Setup PHP cache environment" id: "extcache" uses: "shivammathur/cache-extensions@v1" with: php-version: "${{ matrix.php-versions }}" extensions: "${{ env.extensions }}" key: "${{ env.cacheVersion }}" - name: "Cache PHP extensions" uses: "actions/cache@v2" with: path: "${{ steps.extcache.outputs.dir }}" key: "${{ steps.extcache.outputs.key }}" restore-keys: "${{ steps.extcache.outputs.key }}" - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-versions }}" extensions: "${{ env.extensions }}" tools: "composer:${{ env.composerVersion }} " - name: "Setup problem matchers for PHP" run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"' - name: "Get Composer cache directory" id: "composercache" run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"' - name: "Cache PHP dependencies" uses: "actions/cache@v2" with: path: "${{ steps.composercache.outputs.dir }}" key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}" restore-keys: "${{ runner.os }}-composer-" - name: "Install dependencies" run: "${{ env.composerInstall }}" - name: "PHPStan" run: "make phpstan" tests: name: "Tests" runs-on: "${{ matrix.operating-system }}" strategy: matrix: php-versions: [ "8.0" ] operating-system: [ "ubuntu-latest" ] fail-fast: false steps: - name: "Checkout" uses: "actions/checkout@v2" - name: "Setup PHP cache environment" id: "extcache" uses: "shivammathur/cache-extensions@v1" with: php-version: "${{ matrix.php-versions }}" extensions: "${{ env.extensions }}" key: "${{ env.cacheVersion }}" - name: "Cache PHP extensions" uses: "actions/cache@v2" with: path: "${{ steps.extcache.outputs.dir }}" key: "${{ steps.extcache.outputs.key }}" restore-keys: "${{ steps.extcache.outputs.key }}" - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-versions }}" extensions: "${{ env.extensions }}" tools: "composer:${{ env.composerVersion }} " - name: "Setup problem matchers for PHP" run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"' - name: "Get Composer cache directory" id: "composercache" run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"' - name: "Cache PHP dependencies" uses: "actions/cache@v2" with: path: "${{ steps.composercache.outputs.dir }}" key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}" restore-keys: "${{ runner.os }}-composer-" - name: "Install dependencies" run: "${{ env.composerInstall }}" - name: "Setup problem matchers for PHPUnit" run: 'echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"' - name: "Tests" run: "make tests"