diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index abbd04f..30e15bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,110 +4,117 @@ on: [push, pull_request] jobs: test: runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - php: '7.4' - moodle-branch: 'master' - database: 'pgsql' - - php: '7.4' - moodle-branch: 'MOODLE_311_STABLE' - database: 'mariadb' - - php: '7.3' - moodle-branch: 'MOODLE_310_STABLE' - database: 'pgsql' - - php: '7.2' - moodle-branch: 'MOODLE_39_STABLE' - database: 'mariadb' services: postgres: - image: postgres:10 + image: postgres:13 env: POSTGRES_USER: 'postgres' POSTGRES_HOST_AUTH_METHOD: 'trust' - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3 ports: - 5432:5432 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3 mariadb: - image: mariadb:10.5 + image: mariadb:10 env: MYSQL_USER: 'root' MYSQL_ALLOW_EMPTY_PASSWORD: "true" + MYSQL_CHARACTER_SET_SERVER: "utf8mb4" + MYSQL_COLLATION_SERVER: "utf8mb4_unicode_ci" ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 3 + strategy: + fail-fast: false + matrix: + include: + - php: '8.2' + moodle-branch: 'master' + database: 'pgsql' + - php: '8.1' + moodle-branch: 'MOODLE_402_STABLE' + database: 'mariadb' + - php: '8.0' + moodle-branch: 'MOODLE_401_STABLE' + database: 'pgsql' + - php: '7.4' + moodle-branch: 'MOODLE_400_STABLE' + database: 'mariadb' + steps: - - name: Checkout - uses: actions/checkout@v2 + - name: Check out repository code + uses: actions/checkout@v3 with: path: plugin - - name: Install node - uses: actions/setup-node@v1 - with: - node-version: '14.15.0' - - - name: Setup PHP + - name: Setup PHP ${{ matrix.php }} uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: mbstring, pgsql, mysqli + extensions: ${{ matrix.extensions }} + ini-values: max_input_vars=5000 + # If you are not using code coverage, keep "none". Otherwise, use "pcov" (Moodle 3.10 and up) or "xdebug". + # If you try to use code coverage with "none", it will fallback to phpdbg (which has known problems). + coverage: none - - name: Deploy moodle-plugin-ci + - name: Initialise moodle-plugin-ci run: | - composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^3 - # Add dirs to $PATH + composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^4 echo $(cd ci/bin; pwd) >> $GITHUB_PATH echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH - # PHPUnit depends on en_AU.UTF-8 locale sudo locale-gen en_AU.UTF-8 + echo "NVM_DIR=$HOME/.nvm" >> $GITHUB_ENV - - name: Install Moodle - run: moodle-plugin-ci install --plugin ./plugin --db-host=127.0.0.1 + - name: Install moodle-plugin-ci + run: | + moodle-plugin-ci install --plugin ./plugin --db-host=127.0.0.1 env: DB: ${{ matrix.database }} MOODLE_BRANCH: ${{ matrix.moodle-branch }} - - name: phplint + - name: PHP Lint if: ${{ always() }} run: moodle-plugin-ci phplint - - name: phpcpd + - name: PHP Copy/Paste Detector + continue-on-error: true # This step will show errors but will not fail if: ${{ always() }} - run: moodle-plugin-ci phpcpd || true + run: moodle-plugin-ci phpcpd - - name: phpmd + - name: PHP Mess Detector if: ${{ always() }} run: moodle-plugin-ci phpmd - - name: codechecker + - name: Moodle Code Checker + if: ${{ always() }} + run: moodle-plugin-ci phpcs --max-warnings 0 + + - name: Moodle PHPDoc Checker if: ${{ always() }} - run: moodle-plugin-ci codechecker + run: moodle-plugin-ci phpdoc --max-warnings 0 - - name: validate + - name: Validating if: ${{ always() }} run: moodle-plugin-ci validate - - name: savepoints + - name: Check upgrade savepoints if: ${{ always() }} run: moodle-plugin-ci savepoints - - name: mustache + - name: Mustache lint if: ${{ always() }} run: moodle-plugin-ci mustache - - name: grunt + - name: Grunt if: ${{ always() }} - run: moodle-plugin-ci grunt + run: moodle-plugin-ci grunt --max-lint-warnings 0 - - name: phpunit + - name: PHPUnit tests if: ${{ always() }} - run: moodle-plugin-ci phpunit + run: moodle-plugin-ci phpunit --fail-on-warning - - name: behat + - name: Behat features if: ${{ always() }} run: moodle-plugin-ci behat --profile chrome