Moodle Plugin CI #908
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: | |
# 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 --tags=@3.x.tiny --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' |