name: "Continuous Integration" on: push: paths-ignore: - 'doc/**' pull_request: paths-ignore: - 'doc/**' env: COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --no-suggest --prefer-dist" jobs: tests: name: "CI" runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} strategy: matrix: php-version: - "5.3" - "5.4" - "5.5" - "5.6" - "7.0" - "7.1" - "7.2" - "7.3" - "7.4" dependencies: [locked] os: [ubuntu-latest] experimental: [false] include: - php-version: 5.3 dependencies: highest os: ubuntu-latest experimental: false - php-version: 5.3 dependencies: lowest os: ubuntu-latest experimental: false - php-version: 7.4 dependencies: highest os: ubuntu-latest experimental: true # TODO fix build errors there if possible - php-version: 7.4 os: windows-latest dependencies: locked experimental: false - php-version: 7.4 os: macos-latest dependencies: locked experimental: false - php-version: 8.0 dependencies: highest os: ubuntu-latest experimental: true steps: - name: "Checkout" uses: "actions/checkout@v2" - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: coverage: "none" extensions: "intl" ini-values: "memory_limit=-1" php-version: "${{ matrix.php-version }}" - name: "Determine composer cache directory" id: "determine-composer-cache-directory" run: "echo \"::set-output name=directory::$(composer config cache-dir)\"" - name: "Cache dependencies installed with composer" uses: "actions/cache@v1" with: path: "${{ steps.determine-composer-cache-directory.outputs.directory }}" key: "php-${{ matrix.php-version }}-symfony-php-unit-version-${{ env.SYMFONY_PHPUNIT_VERSION }}-${{ hashFiles('**/composer.lock') }}" restore-keys: "php-${{ matrix.php-version }}-symfony-php-unit-version-${{ env.SYMFONY_PHPUNIT_VERSION }}" - name: "Install highest dependencies from composer.json using composer binary provided by system" if: "matrix.dependencies == 'highest'" run: "composer config platform --unset && composer update ${{ env.COMPOSER_FLAGS }}" - name: "Install lowest dependencies from composer.json using composer binary provided by system" if: "matrix.dependencies == 'lowest'" run: "composer update ${{ env.COMPOSER_FLAGS }} --prefer-lowest" - name: "Install dependencies from composer.lock using composer binary provided by system" if: "matrix.dependencies == 'locked'" run: "composer install ${{ env.COMPOSER_FLAGS }}" - name: "Run install again using composer binary from source" run: "bin/composer install ${{ env.COMPOSER_FLAGS }}" - name: "Validate composer.json" run: "bin/composer validate" - name: "Prepare git environment" run: "git config --global user.name composer && git config --global user.email composer@example.com" - name: "Set SYMFONY_PHPUNIT_VERSION environment variable" if: "matrix.php-version == '7.4'" run: "echo \"::set-env name=SYMFONY_PHPUNIT_VERSION::7.5\"" - name: "Run tests" run: "vendor/bin/simple-phpunit"