Moodle Plugin CI Tests #933
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Jobs: | |
# - "test" | |
# | |
# Runs tests and code analysis ( like PHPUnit, Behat, code checker, etc ) | |
# against a Moodle plugin in CI. | |
# - See https://moodlehq.github.io/moodle-plugin-ci/. | |
# | |
# The current matrix we are using is: | |
# - ubuntu-latest | |
# - PHP7.1, PHP7.4, PHP8.0 | |
# - Moodle from 3.5 to 3.11 | |
name: Moodle Plugin CI | |
# Run this workflow every time a new commit pushed to the repository or PR | |
# is created or on demand. It also executes every morning at 6:30 so we're | |
# the first to know if tests are failing due to an update on PHP or Moodle. | |
on: | |
schedule: | |
- cron: '30 6 * * *' | |
push: | |
workflow_dispatch: | |
jobs: | |
test-legacy: | |
# We will use ubuntu-latest as a virtual environment to use. | |
runs-on: ubuntu-latest | |
services: | |
# The test will be scoped to postgres only. | |
postgres: | |
image: postgres:10 | |
env: | |
POSTGRES_USER: 'postgres' | |
POSTGRES_HOST_AUTH_METHOD: 'trust' | |
ports: | |
- 5432:5432 | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3 | |
# mariadb: | |
# image: mariadb:10 | |
# env: | |
# MYSQL_USER: 'root' | |
# MYSQL_ALLOW_EMPTY_PASSWORD: "true" | |
# ports: | |
# - 3306:3306 | |
# options: --health-cmd="mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 3 | |
strategy: | |
fail-fast: false | |
matrix: | |
php: ['7.1','7.4'] | |
moodle-branch: ['MOODLE_35_STABLE', 'MOODLE_36_STABLE', 'MOODLE_37_STABLE', 'MOODLE_38_STABLE', 'MOODLE_39_STABLE', 'MOODLE_310_STABLE', 'MOODLE_311_STABLE', 'MOODLE_400_STABLE'] | |
database: [pgsql] | |
# browser: ['firefox', 'chrome'] | |
exclude: | |
# Exclude Moodle+PHP incompatible versions | |
# See: https://docs.moodle.org/dev/Moodle_and_PHP | |
- moodle-branch: 'MOODLE_38_STABLE' | |
php: '7.1' | |
- moodle-branch: 'MOODLE_39_STABLE' | |
php: '7.1' | |
- moodle-branch: 'MOODLE_310_STABLE' | |
php: '7.1' | |
- moodle-branch: 'MOODLE_311_STABLE' | |
php: '7.1' | |
- moodle-branch: 'MOODLE_400_STABLE' | |
php: '7.1' | |
- moodle-branch: 'MOODLE_35_STABLE' | |
php: '7.4' | |
- moodle-branch: 'MOODLE_36_STABLE' | |
php: '7.4' | |
- moodle-branch: 'MOODLE_37_STABLE' | |
php: '7.4' | |
steps: | |
# 0. Initial step. | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
with: | |
path: plugin | |
# 0.1 Log | |
- name: Print my ip | |
run: host myip.opendns.com resolver1.opendns.com | grep "myip.opendns.com has" | awk '{print $4}' | |
# 0.2. install a specific version of Node using | |
# https://github.com/actions/setup-node | |
- name: Use Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: 14 | |
# 0.3 Just so we learn about available environment variables GitHub provides | |
- name: Print env variables | |
run: | | |
npm i -g @bahmutov/print-env | |
print-env GITHUB | |
# 1. Setup PHP using the matrix described on the strategy section. | |
- name: Setup PHP ${{ matrix.php }} | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
extensions: ${{ matrix.extensions }} | |
ini-values: max_input_vars=10000 | |
coverage: none | |
# 2. Setup Moodle-plugin-ci | |
- name: Initialise moodle-plugin-ci | |
run: | | |
composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^3 | |
echo $(cd ci/bin; pwd) >> $GITHUB_PATH | |
echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH | |
sudo locale-gen en_AU.UTF-8 | |
echo "NVM_DIR=$HOME/.nvm" >> $GITHUB_ENV | |
env: | |
IGNORE_PATHS: classes/privacy,ignore,node_modules,integration,render | |
COVERAGE: false | |
CODECHECKER_IGNORE_PATHS: classes/privacy,ignore,node_modules,integration,render | |
PHPUNIT_IGNORE_PATHS: classes/privacy,ignore,node_modules,integration,render | |
# 3. Install Atto plugin ( and Quizzes ?) | |
- name: Add MathType plugin for Atto | |
id: install-plugin-atto | |
continue-on-error: true | |
run: | | |
moodle-plugin-ci add-plugin --branch ${GITHUB_REF##*/} wiris/moodle-atto_wiris | |
- name: Add MathType plugin for Atto using the stable branch | |
if: steps.install-plugin-atto.outcome != 'success' | |
run: | | |
moodle-plugin-ci add-plugin --branch stable wiris/moodle-atto_wiris | |
# 3.1 Install Tiny plugin ( and Quizzes ?) | |
- name: Add MathType plugin for TinyMCE | |
id: install-plugin-tiny | |
continue-on-error: true | |
run: | | |
moodle-plugin-ci add-plugin --branch ${GITHUB_REF##*/} wiris/moodle-tinymce_tiny_mce_wiris | |
- name: Add MathType plugin for TinyMCE using the stable branch | |
if: steps.install-plugin-tiny.outcome != 'success' | |
run: | | |
moodle-plugin-ci add-plugin --branch stable wiris/moodle-tinymce_tiny_mce_wiris | |
# 4. Install Moodle-plugin-ci | |
- 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 }} | |
# 4.2. Extra Moodle config (DRAFT, not used) | |
# - name: Moodle custom config | |
# run: moodle-plugin-ci add-config '$CFG->foo = "bar";' | |
# 5. Run all tests. | |
# 5.1. Lint | |
- name: PHP Lint | |
if: ${{ always() }} | |
run: moodle-plugin-ci phplint | |
# 5.2. PHP Detectors | |
- 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 | |
- name: PHP Mess Detector | |
continue-on-error: true # This step will show errors but will not fail | |
if: ${{ always() }} | |
run: moodle-plugin-ci phpmd | |
# 5.3. Code validations | |
- name: Moodle Code Checker | |
if: ${{ always() }} | |
run: moodle-plugin-ci codechecker --max-warnings 50 | |
- name: Validating | |
if: ${{ always() }} | |
run: moodle-plugin-ci validate | |
- name: Check upgrade savepoints | |
if: ${{ always() }} | |
run: moodle-plugin-ci savepoints | |
- name: Mustache Lint | |
if: ${{ always() }} | |
run: moodle-plugin-ci mustache | |
# - name: Grunt | |
# if: ${{ always() }} | |
# run: moodle-plugin-ci grunt --max-lint-warnings 0 | |
# run: moodle-plugin-ci grunt -t eslint --max-lint-warnings 0 | |
# - name : machine ls $GITHUB_WORKSPACE moodledata2 | |
# run : "ls -la $GITHUB_WORKSPACE" | |
# 5.4. Code testing | |
# Run PHPUnit tests on all Moodle branches. | |
- name: PHPUnit tests | |
if: ${{ always() }} | |
run: moodle-plugin-ci phpunit | |
# Run Behat tests on all Moodle branches. | |
- name: Behat features | |
if: ${{ matrix.moodle-branch == 'MOODLE_400_STABLE' || matrix.moodle-branch == 'master' }} | |
run: moodle-plugin-ci behat --profile default -vvv | |
# Run Behat Legacy test on the rest Moodle branchs | |
- name: Behat legacy features | |
if: ${{ !(matrix.moodle-branch == 'MOODLE_400_STABLE' || matrix.moodle-branch == 'master') }} | |
run: | | |
docker run -d --rm --name=selenium --net=host --shm-size=2g -v /home/runner/work/moodle-filter_wiris/moodle-filter_wiris/moodle:/home/runner/work/moodle-filter_wiris/moodle-filter_wiris/moodle selenium/standalone-chrome:3 | |
nohup php -S localhost:8000 -t /home/runner/work/moodle-filter_wiris/moodle-filter_wiris/moodle > phpd.log 2>&1 & | |
php moodle/admin/tool/behat/cli/run.php [email protected] --profile=chrome --suite=default --auto-rerun=2 --verbose -vvv | |
docker stop selenium | |
# # 5.5. Upload snapshots of errors ( Not working ) | |
# # Save videos and screenshots as test artifacts | |
# # https://github.com/actions/upload-artifact | |
# - name: Upload behat screenshots (if, failed) | |
# uses: actions/upload-artifact@master | |
# # there might be no screenshots created when: | |
# # - there are no test failures | |
# # so only upload screenshots if previous step has failed | |
# if: failure() | |
# with: | |
# name: screenshots-behat-${{ matrix.moodle-branch }}-${{ matrix.php }} | |
# path: '$GITHUB_WORKSPACE/behatfaildumps' | |
test: | |
# We will use ubuntu-latest as a virtual environment to use. | |
runs-on: ubuntu-latest | |
services: | |
# The test will be scoped to postgres only. | |
postgres: | |
image: postgres:13 | |
env: | |
POSTGRES_USER: 'postgres' | |
POSTGRES_HOST_AUTH_METHOD: 'trust' | |
ports: | |
- 5432:5432 | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3 | |
strategy: | |
fail-fast: false | |
matrix: | |
php: ['8.0'] | |
moodle-branch: [master] | |
database: [pgsql] | |
steps: | |
# 0. Initial step. | |
- name: Check out repository code | |
uses: actions/checkout@v2 | |
with: | |
path: plugin | |
# 0.1 Log | |
- name: Print my ip | |
run: host myip.opendns.com resolver1.opendns.com | grep "myip.opendns.com has" | awk '{print $4}' | |
# 0.2. install a specific version of Node using | |
# https://github.com/actions/setup-node | |
- name: Use Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: 14 | |
# 0.3 Just so we learn about available environment variables GitHub provides | |
- name: Print env variables | |
run: | | |
npm i -g @bahmutov/print-env | |
print-env GITHUB | |
# 1. Setup PHP using the matrix described on the strategy section. | |
- name: Setup PHP ${{ matrix.php }} | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
extensions: ${{ matrix.extensions }} | |
ini-values: max_input_vars=10000 | |
coverage: none | |
# 2. Setup Moodle-plugin-ci | |
- name: Initialise moodle-plugin-ci | |
run: | | |
composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^3 | |
echo $(cd ci/bin; pwd) >> $GITHUB_PATH | |
echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH | |
sudo locale-gen en_AU.UTF-8 | |
echo "NVM_DIR=$HOME/.nvm" >> $GITHUB_ENV | |
env: | |
IGNORE_PATHS: classes/privacy,ignore,node_modules,integration,render | |
COVERAGE: false | |
CODECHECKER_IGNORE_PATHS: classes/privacy,ignore,node_modules,integration,render | |
PHPUNIT_IGNORE_PATHS: classes/privacy,ignore,node_modules,integration,render | |
# 3. Install Atto plugin ( and Quizzes ?) | |
- name: Add MathType plugin for Atto | |
id: install-plugin-atto | |
continue-on-error: true | |
run: | | |
moodle-plugin-ci add-plugin --branch ${GITHUB_REF##*/} wiris/moodle-atto_wiris | |
- name: Add MathType plugin for Atto using the stable branch | |
if: steps.install-plugin-atto.outcome != 'success' | |
run: | | |
moodle-plugin-ci add-plugin --branch stable wiris/moodle-atto_wiris | |
# 3.1 Install Tiny plugin ( and Quizzes ?) | |
- name: Add MathType plugin for TinyMCE | |
id: install-plugin-tiny | |
continue-on-error: true | |
run: | | |
moodle-plugin-ci add-plugin --branch ${GITHUB_REF##*/} wiris/moodle-tiny_wiris | |
- name: Add MathType plugin for TinyMCE using the stable branch | |
if: steps.install-plugin-tiny.outcome != 'success' | |
run: | | |
moodle-plugin-ci add-plugin --branch stable wiris/moodle-tiny_wiris | |
# 4. Install Moodle-plugin-ci | |
- 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 }} | |
# 5. Run all tests. | |
# 5.1. Lint | |
- name: PHP Lint | |
if: ${{ always() }} | |
run: moodle-plugin-ci phplint | |
# 5.2. PHP Detectors | |
- 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 | |
- name: PHP Mess Detector | |
continue-on-error: true # This step will show errors but will not fail | |
if: ${{ always() }} | |
run: moodle-plugin-ci phpmd | |
# 5.3. Code validations | |
- name: Moodle Code Checker | |
if: ${{ always() }} | |
run: moodle-plugin-ci codechecker --max-warnings 50 | |
- name: Validating | |
if: ${{ always() }} | |
run: moodle-plugin-ci validate | |
- name: Check upgrade savepoints | |
if: ${{ always() }} | |
run: moodle-plugin-ci savepoints | |
- name: Mustache Lint | |
if: ${{ always() }} | |
run: moodle-plugin-ci mustache | |
# 5.4. Code testing | |
# Run PHPUnit tests on all Moodle branches. | |
- name: PHPUnit tests | |
if: ${{ always() }} | |
run: moodle-plugin-ci phpunit | |
# Run Behat tests on all Moodle branches. | |
- name: Behat features | |
run: moodle-plugin-ci behat --profile default -vvv |