8fc311101c
Both the pgsql and mysql steps we were using use `docker:stable`, which has been abandoned and is not a recommended approach. They are also both abandoned. This commit moves to using a service entry for postgres; and a manual step for mysql. We can't use the services entry for MySQL because GHA does not support providing arguments to service containers.
129 lines
3.5 KiB
YAML
129 lines
3.5 KiB
YAML
name: Core
|
|
|
|
on:
|
|
push:
|
|
branches-ignore:
|
|
- main
|
|
- MOODLE_[0-9]+_STABLE
|
|
tags-ignore:
|
|
- v[0-9]+.[0-9]+.[0-9]+*
|
|
workflow_dispatch:
|
|
inputs:
|
|
phpunit_extra_options:
|
|
description: Additional options to apply to PHPUnit
|
|
required: false
|
|
default: ''
|
|
|
|
env:
|
|
php: 8.4
|
|
|
|
jobs:
|
|
Grunt:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- name: Checking out code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Configuring node & npm
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: '.nvmrc'
|
|
|
|
- name: Installing node stuff
|
|
run: npm install
|
|
|
|
- name: Running grunt
|
|
run: npx grunt
|
|
|
|
- name: Looking for uncommitted changes
|
|
# Add all files to the git index and then run diff --cached to see all changes.
|
|
# This ensures that we get the status of all files, including new files.
|
|
# We ignore npm-shrinkwrap.json to make the tasks immune to npm changes.
|
|
run: |
|
|
git add .
|
|
git reset -- npm-shrinkwrap.json
|
|
git diff --cached --exit-code
|
|
|
|
PHPUnit:
|
|
runs-on: ${{ matrix.os }}
|
|
services:
|
|
exttests:
|
|
image: moodlehq/moodle-exttests
|
|
ports:
|
|
- 8080:80
|
|
redis:
|
|
image: redis
|
|
ports:
|
|
- 6379:6379
|
|
postgres:
|
|
image: ${{ matrix.db == 'pgsql' && 'postgres:16' || '' }}
|
|
env:
|
|
POSTGRES_DB: test
|
|
POSTGRES_USER: test
|
|
POSTGRES_PASSWORD: test
|
|
ports:
|
|
- 5432:5432
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# MySQL builds always run with the lowest PHP supported version.
|
|
- os: ubuntu-24.04
|
|
php: 8.3
|
|
extensions:
|
|
db: mysqli
|
|
# PostgreSQL builds always run with the highest PHP supported version.
|
|
- os: ubuntu-24.04
|
|
php: 8.4
|
|
db: pgsql
|
|
|
|
steps:
|
|
- name: Run MySQL Server
|
|
if: ${{ matrix.db == 'mysqli' }}
|
|
run: |
|
|
docker run --rm \
|
|
-e MYSQL_DATABASE=test \
|
|
-e MYSQL_USER=test \
|
|
-e MYSQL_PASSWORD=test \
|
|
-e MYSQL_ROOT_PASSWORD=test \
|
|
-p 3306:3306 \
|
|
-d \
|
|
--tmpfs /var/lib/mysql:rw,noexec,nosuid,size=1024M \
|
|
mysql:8.4 \
|
|
--skip-log-bin \
|
|
--collation-server=utf8mb4_bin
|
|
|
|
- name: Configuring git vars
|
|
uses: rlespinasse/github-slug-action@v4
|
|
|
|
- name: Setting up 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: Checking out code from ${{ env.GITHUB_REF_SLUG }}
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setting up PHPUnit
|
|
env:
|
|
dbtype: ${{ matrix.db }}
|
|
run: |
|
|
echo "pathtophp=$(which php)" >> $GITHUB_ENV # Inject installed pathtophp to env. The template config needs it.
|
|
cp .github/workflows/config-template.php config.php
|
|
mkdir ../moodledata
|
|
sudo locale-gen en_AU.UTF-8
|
|
php public/admin/tool/phpunit/cli/init.php --no-composer-self-update
|
|
|
|
- name: Running PHPUnit tests
|
|
env:
|
|
dbtype: ${{ matrix.db }}
|
|
phpunit_options: ${{ secrets.phpunit_options }}
|
|
run: vendor/bin/phpunit $phpunit_options ${{ inputs.phpunit_extra_options }}
|
|
|
|
- name: Git status
|
|
run: git status
|