# https://help.github.com/en/categories/automating-your-workflow-with-github-actions name: "Integrate" on: pull_request: ~ push: branches: - master jobs: static-code-analysis: name: "Static Code Analysis" runs-on: ubuntu-latest strategy: matrix: php-version: - 7.4 dependencies: - highest steps: - name: "Checkout" uses: actions/checkout@v2 - name: "Install PHP with extensions" uses: shivammathur/setup-php@v2 with: coverage: none 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 }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.json') }} restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - name: "Install highest dependencies from composer.json" if: matrix.dependencies == 'highest' run: composer install --no-interaction --no-progress --no-suggest - name: "Cache cache directory for vimeo/psalm" uses: actions/cache@v1 with: path: .build/psalm key: php-${{ matrix.php-version }}-psalm-${{ github.sha }} restore-keys: php-${{ matrix.php-version }}-psalm- - name: "Run vimeo/psalm" run: vendor/bin/psalm --find-dead-code --find-unused-psalm-suppress --diff --diff-methods --shepherd --show-info=false --stats --output-format=github tests: name: "Tests" runs-on: ubuntu-latest strategy: matrix: php-version: - 7.1 - 7.2 - 7.3 - 7.4 symfony-version: - 3 - 4 - 5 exclude: - php-version: 7.1 symfony-version: 5 steps: - name: "Checkout" uses: actions/checkout@v2 - name: "Install PHP with extensions" uses: shivammathur/setup-php@v2 with: coverage: none 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 }}-composer-${{ matrix.symfony-version }}-${{ hashFiles('composer.json') }} restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.symfony-version }}- - name: "Install symfony 3 dependencies from composer.json" if: matrix.symfony-version == '3' run: composer require symfony/framework-bundle ^3.0 --prefer-stable --update-with-all-dependencies --no-interaction --no-progress --no-suggest - name: "Install Symfony 4 dependencies from composer.json" if: matrix.symfony-version == '4' run: composer require symfony/framework-bundle ^4.0 --prefer-stable --update-with-all-dependencies --no-interaction --no-progress --no-suggest - name: "Install Symfony 5 dependencies from composer.json" if: matrix.symfony-version == '5' run: composer require symfony/framework-bundle ^5.0 --prefer-stable --update-with-all-dependencies --no-interaction --no-progress --no-suggest - name: "Run unit tests with phpunit" run: vendor/bin/phpunit --configuration=phpunit.xml - name: "Build acceptance tests with codeception" run: vendor/bin/codecept build - name: "Run base acceptance tests with codeception" run: vendor/bin/codecept run -v -g symfony-common - name: "Run Symfony 3 acceptance tests with codeception" if: matrix.symfony-version == '3' run: vendor/bin/codecept run -v -g symfony-3 - name: "Run symfony 4 acceptance tests with codeception" if: matrix.symfony-version == '4' run: vendor/bin/codecept run -v -g symfony-4 - name: "Run Symfony 5 acceptance tests with codeception" if: matrix.symfony-version == '5' run: vendor/bin/codecept run -v -g symfony-5