core23/FacebookBundle

View on GitHub
.github/workflows/continuous-integration.yml

Summary

Maintainability
Test Coverage
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions

on:
  pull_request:
  push:
    branches:
      - master
    tags:
      - "**"

name: "Continuous Integration"

jobs:
  coding-standards:
    name: "Coding Standards"

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version:
          - 7.4

    steps:
      - name: "Checkout"
        uses: actions/checkout@v2.3.1

      - name: "Install PHP with extensions"
        uses: shivammathur/setup-php@2.3.1
        with:
          coverage: none
          extensions: "mbstring, json"
          php-version: ${{ matrix.php-version }}

      - name: "Validate composer.json and composer.lock"
        run: composer validate --strict

      - name: "Cache dependencies installed with composer"
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: php${{ matrix.php-version }}-composer-
          restore-keys: |
            php${{ matrix.php-version }}-composer-

      - name: "Install locked dependencies with composer"
        run: composer install --no-interaction --no-progress --no-suggest

      - name: "Run localheinz/composer-normalize"
        run: composer normalize --dry-run

      - name: "Create cache directory for friendsofphp/php-cs-fixer"
        run: mkdir -p .build/php-cs-fixer

      - name: "Cache cache directory for friendsofphp/php-cs-fixer"
        uses: actions/cache@v2
        with:
          path: .build/php-cs-fixer
          key: php${{ matrix.php-version }}-php-cs-fixer-
          restore-keys: |
            php${{ matrix.php-version }}-php-cs-fixer-

      - name: "Run friendsofphp/php-cs-fixer"
        run: composer cs-diff

  static-code-analysis:
    name: "Static Code Analysis"

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version:
          - 7.4

    steps:
      - name: "Checkout"
        uses: actions/checkout@v2.3.1

      - name: "Install PHP with extensions"
        uses: shivammathur/setup-php@2.3.1
        with:
          coverage: none
          extensions: "mbstring, json"
          php-version: ${{ matrix.php-version }}

      - name: "Cache dependencies installed with composer"
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: ${{ matrix.php-version }}-composer-
          restore-keys: |
            ${{ matrix.php-version }}-composer-

      - name: "Install locked dependencies with composer"
        run: composer install --no-interaction --no-progress --no-suggest

      - name: "Run phpstan/phpstan"
        run: composer phpstan

  tests:
    name: "Tests"

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version:
          - 7.3
          - 7.4

        dependencies:
          - lowest
          - highest

        symfony:
          - ~4.2
          - ~5.0

    steps:
      - name: "Checkout"
        uses: actions/checkout@v2.3.1

      - name: "Install PHP with extensions"
        uses: shivammathur/setup-php@2.3.1
        with:
          coverage: none
          extensions: "mbstring, json"
          php-version: ${{ matrix.php-version }}

      - name: "Cache dependencies installed with composer"
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: php${{ matrix.php-version }}-composer-
          restore-keys: |
            php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-

      - name: "Lock symfony version"
        run: composer require "symfony/symfony:${{ matrix.symfony }}" --no-update

      - name: "Install lowest dependencies with composer"
        if: matrix.dependencies == 'lowest'
        run: composer update --no-interaction --no-progress --no-suggest --prefer-lowest

      - name: "Install highest dependencies with composer"
        if: matrix.dependencies == 'highest'
        run: composer update --no-interaction --no-progress --no-suggest

      - name: "Run tests with phpunit/phpunit"
        run: composer test

  code-coverage:
    name: "Code Coverage"

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version:
          - 7.4

    steps:
      - name: "Checkout"
        uses: actions/checkout@v2.3.1

      - name: "Install PHP with extensions"
        uses: shivammathur/setup-php@2.3.1
        with:
          coverage: pcov
          extensions: "mbstring, json"
          php-version: ${{ matrix.php-version }}

      - name: "Cache dependencies installed with composer"
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: php${{ matrix.php-version }}-composer-
          restore-keys: |
            php${{ matrix.php-version }}-composer-

      - name: "Install locked dependencies with composer"
        run: composer install --no-interaction --no-progress --no-suggest

      - name: "Collect code coverage with pcov and phpunit/phpunit"
        run: composer coverage

      - name: "Send code coverage report to Codecov.io"
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
        run: bash <(curl -s https://codecov.io/bash)

  mutation-tests:
    name: "Mutation Tests"

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version:
          - 7.4

    steps:
      - name: "Checkout"
        uses: actions/checkout@v2.3.1

      - name: "Install PHP with extensions"
        uses: shivammathur/setup-php@2.3.1
        with:
          coverage: pcov
          extensions: "mbstring"
          php-version: ${{ matrix.php-version }}

      - name: "Cache dependencies installed with composer"
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: php${{ matrix.php-version }}-composer-
          restore-keys: |
            php${{ matrix.php-version }}-composer-

      - name: "Install locked dependencies with composer"
        run: composer install --no-interaction --no-progress --no-suggest

      - name: "Run mutation tests with pcov and infection/infection"
        run: composer infection