Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

name: Tests

on: [push, pull_request]

jobs:
  ci:
    name: ci
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: 'postgres'
          POSTGRES_HOST_AUTH_METHOD: 'trust'
        options: --health-cmd="pg_isready" --health-interval 10s --health-timeout 5s --health-retries 5
        ports:
          - 5432:5432
      mariadb:
        image: mariadb:10
        env:
          MYSQL_USER: 'root'
          MYSQL_ALLOW_EMPTY_PASSWORD: "true"
          MYSQL_CHARACTER_SET_SERVER: "utf8mb4"
          MYSQL_COLLATION_SERVER: "utf8mb4_unicode_ci"
        options: --health-cmd="mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 3
        ports:
          - 3306:3306

    strategy:
      fail-fast: false
      matrix:
        moodle-branch: ['MOODLE_402_STABLE', 'MOODLE_403_STABLE', 'MOODLE_404_STABLE', 'main']
        php: ['8.2']
        database: ['mariadb', 'pgsql']
        include:
          - php: '8.3'
            moodle-branch: 'main'
            database: 'pgsql'

    steps:
      - name: checkout plugin
        uses: actions/checkout@v4
        with:
          path: this-plugin

      - name: setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          ini-values: max_input_vars=5000
          coverage: pcov

      - name: composer
        run: |
           composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci
           echo $(cd ci/bin; pwd) >> $GITHUB_PATH
           echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH
           sudo locale-gen en_AU.UTF-8

      - name: install Moodle
        run: moodle-plugin-ci --ansi install --db-host=127.0.0.1 --plugin this-plugin
        env:
          DB: ${{ matrix.database }}
          MOODLE_BRANCH: ${{ matrix.moodle-branch }}

      - name: phplint
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi phplint

      - name: phpmd
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi phpmd

      - name: phpdoc
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi phpdoc

      - name: codechecker
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi codechecker

      - name: validate
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi validate

      - name: savepoints
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi savepoints

      - name: grunt
        if: ${{ matrix.moodle-branch == 'main' }}
        run: moodle-plugin-ci --ansi grunt

      - name: mustache
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi mustache

      - name: phpunit
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi phpunit --testdox --coverage-text --coverage-clover

      - name: privacy
        if: ${{ !cancelled() }}
        run: vendor/bin/phpunit --colors --no-coverage --testsuite tool_dataprivacy_testsuite,tool_policy_testsuite,core_privacy_testsuite
        working-directory: moodle

      - name: coveralls
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci coveralls-upload || true
        env:
          COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: firefox
        id: behat
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi behat

      - name: faildump
        if: ${{ failure() && steps.behat.outcome == 'failure' }}
        uses: actions/upload-artifact@v4
        with:
          name: firefox faildump (${{ join(matrix.*, ', ') }})
          path: ${{ github.workspace }}/moodledata/behat_dump
          retention-days: 7
          if-no-files-found: ignore

      - name: chrome
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi behat --profile chrome

      - name: admin bookmarks
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi behat --auto-rerun=0 --profile chrome blocks/admin_bookmarks
        working-directory: moodle

      - name: admin xmldb
        if: ${{ !cancelled() }}
        run: moodle-plugin-ci --ansi behat --auto-rerun=0 --profile chrome admin/tool/xmldb
        working-directory: moodle