yiisoft/yii2

View on GitHub
.github/workflows/ci-mysql.yml

Summary

Maintainability
Test Coverage
on:
  - pull_request
  - push

name: ci-mysql

jobs:
  tests:
    name: PHP ${{ matrix.php-version }}-mysql-${{ matrix.mysql-version }}
    env:
      extensions: curl, intl, pdo, pdo_mysql
      key: cache-v1

    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os:
          - ubuntu-latest

        php-version:
          - 7.4

        mysql-version:
          - latest

    services:
      mysql:
        image: mysql:${{ matrix.mysql-version }}
        env:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: yiitest
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup cache environment
        id: cache-env
        uses: shivammathur/cache-extensions@v1
        with:
          php-version: ${{ matrix.php-version }}
          extensions: ${{ env.extensions }}
          key: ${{ env.key }}

      - name: Cache extensions
        uses: actions/cache@v3
        with:
          path: ${{ steps.cache-env.outputs.dir }}
          key: ${{ steps.cache-env.outputs.key }}
          restore-keys: ${{ steps.cache-env.outputs.key }}

      - name: Install PHP with extensions
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          extensions: ${{ env.extensions }}
          ini-values: date.timezone='UTC'
          coverage: pcov

      - name: Determine composer cache directory
        if: matrix.os == 'ubuntu-latest'
        run: echo "COMPOSER_CACHE_DIR=$(composer config cache-dir)" >> $GITHUB_ENV

      - name: Cache dependencies installed with composer
        uses: actions/cache@v1
        with:
          path: ${{ env.COMPOSER_CACHE_DIR }}
          key: php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.json') }}
          restore-keys: |
            php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-

      - name: Install dependencies with composer
        run: composer update --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi

      - name: Run mysql tests with phpunit
        run: vendor/bin/phpunit --group mysql --colors=always