Skip to content

PM-45856 increment version and update changelog #154

PM-45856 increment version and update changelog

PM-45856 increment version and update changelog #154

Workflow file for this run

#
# Automatically runs the Moodle Plugin CI on every push and pull request.
# This includes code quality checks like phpcs, php-cs-fixer, and Moodle's own code checkers.
#
# For tag builds, it also creates a release on GitHub and uploads the plugin to Moodle's Plugin Directory.
#
# Based on:
# - https://github.com/moodlehq/moodle-plugin-ci.
# - https://github.com/moodlehq/moodle-plugin-release
# - https://github.com/softprops/action-gh-release.
#
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: # see https://moodledev.io/general/development/policies/php
- '7.4' # minimum support version by Moodle 4.1
- '8.0'
- '8.1'
- '8.3' # max. supported version by Moodle 4.4 (as of writing)
moodle-branch: [ 'MOODLE_401_STABLE', 'MOODLE_404_STABLE' ] # LTS & latest.
database: [ pgsql ] # We don't use any database specific features, and our test sites run mariadb already.
exclude:
# Moodle 4.4+ requires PHP 8.1+
- php: '8.0'
moodle-branch: 'MOODLE_404_STABLE'
- php: '7.4'
moodle-branch: 'MOODLE_404_STABLE'
# Moodle 4.1 does not support PHP 8.3
- php: '8.3'
moodle-branch: 'MOODLE_401_STABLE'
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
# If you are not using code coverage, keep "none". Otherwise, use "pcov" (Moodle 3.10 and up) or "xdebug".
# If you try to use code coverage with "none", it will fallback to phpdbg (which has known problems).
coverage: none
- name: Install plugin dependencies
run: |
cd plugin
composer install --prefer-dist --no-interaction --no-progress --no-suggest --optimize-autoloader
- 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: 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 }}
IGNORE_PATHS: 'vendor,development'
- name: PHP Lint
if: ${{ always() }}
run: moodle-plugin-ci phplint
- name: PHP code sniffer & php-cs-fixer
if: ${{ always() }}
run: |
cd plugin
composer lint
- name: PHP Mess Detector
continue-on-error: true # This step will show errors but will not fail
if: ${{ always() }}
run: moodle-plugin-ci phpmd
- name: Moodle Code Checker
if: ${{ always() }}
run: moodle-plugin-ci phpcs --max-warnings 0
- name: Moodle PHPDoc Checker
if: ${{ always() }}
run: moodle-plugin-ci phpdoc --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 --max-lint-warnings 0
- name: PHPUnit tests
if: ${{ always() }}
run: moodle-plugin-ci phpunit --fail-on-warning
# Automatically releases tags when the CI tests passed.
release:
runs-on: ubuntu-latest
needs: test
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
env:
PLUGIN: mod_kialo
CURL: curl -s
ENDPOINT: https://moodle.org/webservice/rest/server.php
TOKEN: ${{ secrets.MOODLE_ORG_TOKEN }} # see https://moodle.org/user/managetoken.php
FUNCTION: local_plugins_add_version
permissions:
contents: write
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
path: plugin
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
# Creates plugin/development/mod_kialo.zip with the current version
- name: Create bundle
run: |
cd plugin/development
./bundle.sh
# Create a new release on GitHub
- name: Release to GitHub
id: github-release
uses: softprops/action-gh-release@v1
with:
files: |
plugin/development/mod_kialo.zip
generate_release_notes: true
prerelease: ${{contains(github.ref, '-beta')}}
# Uploads the release to Moodle using its Plugin Directory API
- name: Upload to plugin directory
id: add-version
if: github.event_name == 'push' && !contains(github.ref, '-beta')
run: |
if [[ ! -z "${{ github.event.inputs.tag }}" ]]; then
TAGNAME="${{ github.event.inputs.tag }}"
elif [[ $GITHUB_REF = refs/tags/* ]]; then
TAGNAME="${GITHUB_REF##*/}"
fi
if [[ -z "${TAGNAME}" ]]; then
echo "No tag name has been provided!"
exit 1
fi
ZIPURL="${{ fromJSON(steps.github-release.outputs.assets)[0].browser_download_url }}"
RESPONSE=$(${CURL} ${ENDPOINT} --data-urlencode "wstoken=${TOKEN}" \
--data-urlencode "wsfunction=${FUNCTION}" \
--data-urlencode "moodlewsrestformat=json" \
--data-urlencode "frankenstyle=${PLUGIN}" \
--data-urlencode "zipurl=${ZIPURL}" \
--data-urlencode "vcssystem=git" \
--data-urlencode "vcsrepositoryurl=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" \
--data-urlencode "vcstag=${TAGNAME}" \
--data-urlencode "changelogurl=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/commits/${TAGNAME}" \
--data-urlencode "altdownloadurl=${ZIPURL}")
echo "response=${RESPONSE}" >> $GITHUB_OUTPUT
- name: Evaluate the response
id: evaluate-response
if: steps.add-version.conclusion == 'success'
env:
RESPONSE: ${{ steps.add-version.outputs.response }}
run: |
jq <<< ${RESPONSE}
jq --exit-status ".id" <<< ${RESPONSE} > /dev/null