Skip to content

Moodle Plugin CI

Moodle Plugin CI #914

Workflow file for this run

# 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:
# 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: 'master'
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=5000
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
MOODLE_DOCKER_BEHAT_FAILDUMP: /home/runner/work/moodle-tinymce_tiny_mce_wiris/moodle-tinymce_tiny_mce_wiris/behatfaildumps
# 3. Install Filter plugin ( and Quizzes ?)
- name: Add MathType filter plugin
id: install-plugin-filter
continue-on-error: true
run: |
moodle-plugin-ci add-plugin --branch ${GITHUB_REF##*/} wiris/moodle-filter_wiris
- name: Add MathType filter plugin using the stable branch
if: steps.install-plugin-filter.outcome != 'success'
run: |
moodle-plugin-ci add-plugin --branch stable wiris/moodle-filter_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 0
- 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 -t eslint --max-lint-warnings 0
# - name : machine ls $GITHUB_WORKSPACE moodledata2
# run : "ls -la $GITHUB_WORKSPACE"
# 5.4. Code testing
- name: PHPUnit tests
if: ${{ always() }}
run: moodle-plugin-ci phpunit
# Run all Behat tests on latest Moodle branch
- 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-tinymce_tiny_mce_wiris/moodle-tinymce_tiny_mce_wiris/moodle:/home/runner/work/moodle-tinymce_tiny_mce_wiris/moodle-tinymce_tiny_mce_wiris/moodle selenium/standalone-chrome:3
nohup php -S localhost:8000 -t /home/runner/work/moodle-tinymce_tiny_mce_wiris/moodle-tinymce_tiny_mce_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'
# path: '/home/runner/work/moodle-tinymce_tiny_mce_wiris/moodle-tinymce_tiny_mce_wiris/behatfaildumps'