Updated Moodle Plugin CI to latest upstream recommendations #75
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
name: Moodle Plugin CI | |
on: [push, pull_request] | |
jobs: | |
test: | |
runs-on: ubuntu-22.04 | |
services: | |
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 | |
mariadb: | |
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: | |
php: ['8.1', '8.2', '8.3'] | |
moodle-branch: ['MOODLE_404_STABLE'] | |
database: [pgsql, mariadb] | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
path: plugin | |
- 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 | |
- name: Initialise moodle-plugin-ci | |
run: | | |
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 | |
sudo locale-gen en_AU.UTF-8 | |
echo "NVM_DIR=$HOME/.nvm" >> $GITHUB_ENV | |
- name: Add Boost Union as dependency | |
run: | | |
moodle-plugin-ci add-plugin --branch main moodle-an-hochschulen/moodle-theme_boost_union | |
- name: Copy and modify Boost Union Behat tests to be used on Boost Union Child | |
# The Moodle Behat init script ignores Behat features from themes which are not active. | |
# However, our goal is to run all Boost Union tests on Boost Union Child to verify that Boost Union Child | |
# does not break any of Boost Union's features. | |
# To realize this, we copy the Boost Union feature files to the Boost Union child test directory. | |
# The Behat init script won't ignore them there then. | |
run: | | |
# Copy the Boost Union feature files to a temporary folder. | |
mkdir plugin/tests/behatbu | |
cp moodle-plugin-ci-plugins/moodle-theme_boost_union/tests/behat/*.feature plugin/tests/behatbu/ | |
# Add a suffix to the feature title in the Boost Union features. | |
# This is necessary as the Moodle code checker would otherwise complain about duplicate feature names. | |
sed -i '/^Feature:/ s/$/ - Running on Boost Union Child/' plugin/tests/behatbu/*.feature | |
# Add the @theme_boost_union_child tag to the tag list of the Boost Union features. | |
# This is necessary as the Moodle plugin validator would otherwise complain about the missing tag. | |
sed -i '1 s/$/ @theme_boost_union_child/' plugin/tests/behatbu/*.feature | |
# Move the modified Boost Union feature files to the Boost Union Child Behat test directory. | |
mv plugin/tests/behatbu/*.feature plugin/tests/behat/ | |
rm -rf plugin/tests/behatbu | |
- 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: PHP Lint | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci phplint | |
- name: PHP Mess Detector | |
continue-on-error: true # This step will show errors but will not fail | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci phpmd | |
- name: Moodle Code Checker | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci phpcs --max-warnings 0 | |
- name: Moodle PHPDoc Checker | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci phpdoc --max-warnings 0 | |
- name: Validating | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci validate | |
- name: Check upgrade savepoints | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci savepoints | |
- name: Mustache Lint | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci mustache | |
- name: Grunt | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci grunt --max-lint-warnings 0 | |
- name: PHPUnit tests | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci phpunit --fail-on-warning | |
- name: Behat features | |
id: behat | |
if: ${{ !cancelled() }} | |
run: moodle-plugin-ci behat --profile chrome --suite boost_union_child --tags="@theme_boost_union,@theme_boost_union_child" | |
- name: Upload Behat Faildump | |
if: ${{ failure() && steps.behat.outcome == 'failure' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Behat Faildump (${{ join(matrix.*, ', ') }}) | |
path: ${{ github.workspace }}/moodledata/behat_dump | |
retention-days: 7 | |
if-no-files-found: ignore | |
- name: Mark cancelled jobs as failed. | |
if: ${{ cancelled() }} | |
run: exit 1 |