ci: add MySQL 8.4 test lane
Moodle Plugin CI / Test (mysql) (push) Successful in 3m45s
Moodle Plugin CI / Test (postgresql) (push) Successful in 3m15s

This commit is contained in:
2026-08-23 22:58:57 +04:00
parent d76637c7c3
commit 82023483ff
4 changed files with 83 additions and 29 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \ RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \
&& ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx \ && ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx \
&& apt-get update \ && apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends postgresql-client \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends default-mysql-client-core postgresql-client \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
&& locale-gen en_AU.UTF-8 \ && locale-gen en_AU.UTF-8 \
&& git init /opt/moodle-plugin-ci \ && git init /opt/moodle-plugin-ci \
+15 -4
View File
@@ -13,19 +13,30 @@ permissions:
jobs: jobs:
test: test:
name: Test (${{ matrix.database }})
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- database: postgresql
profile: ""
service: ci
- database: mysql
profile: --profile mysql
service: ci-mysql
env: env:
COMPOSE_PROJECT_NAME: local_webhooks_${{ gitea.run_id }}_${{ gitea.run_attempt }} COMPOSE_PROJECT_NAME: local_webhooks_${{ gitea.run_id }}_${{ gitea.run_attempt }}_${{ matrix.database }}
steps: steps:
- name: Check out repository - name: Check out repository
uses: https://github.com/actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 uses: https://github.com/actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Build test image - name: Build test image
run: docker compose build --pull ci run: docker compose ${{ matrix.profile }} build --pull ${{ matrix.service }}
- name: Test plugin - name: Test plugin
run: docker compose up --abort-on-container-exit --exit-code-from ci run: docker compose ${{ matrix.profile }} up --abort-on-container-exit --exit-code-from ${{ matrix.service }} ${{ matrix.service }}
- name: Clean up - name: Clean up
if: always() if: always()
run: docker compose down --volumes --remove-orphans run: docker compose ${{ matrix.profile }} down --volumes --remove-orphans --rmi local
+15 -4
View File
@@ -10,15 +10,26 @@ The `develop` branch is unreleased modernization work toward `6.0.0` and is not
## Current CI baseline ## Current CI baseline
Gitea Actions currently tests only Moodle `5.2.2` on PHP `8.4` with PostgreSQL `16`. This is a development baseline, not the final support matrix. Gitea Actions currently tests Moodle `5.2.2` on PHP `8.4` with PostgreSQL `16` and MySQL `8.4`. This is a development baseline, not the final support matrix.
Run the same checks from the repository root with Docker: Run the same checks from the repository root with Docker:
PostgreSQL:
```bash ```bash
export COMPOSE_PROJECT_NAME=local_webhooks_local export COMPOSE_PROJECT_NAME=local_webhooks_local_postgresql
docker compose build --pull ci docker compose build --pull ci
docker compose up --abort-on-container-exit --exit-code-from ci docker compose up --abort-on-container-exit --exit-code-from ci ci
docker compose down --volumes --remove-orphans docker compose down --volumes --remove-orphans --rmi local
```
MySQL:
```bash
export COMPOSE_PROJECT_NAME=local_webhooks_local_mysql
docker compose --profile mysql build --pull ci-mysql
docker compose --profile mysql up --abort-on-container-exit --exit-code-from ci-mysql ci-mysql
docker compose --profile mysql down --volumes --remove-orphans --rmi local
``` ```
## License ## License
+52 -20
View File
@@ -1,3 +1,25 @@
x-ci: &ci
build:
context: .
dockerfile: .docker/ci/Dockerfile
command:
- /bin/bash
- -lc
- |
set -euo pipefail
php --version
composer --version
node --version
moodle-plugin-ci --version
moodle-plugin-ci install --plugin /plugin --branch v5.2.2 --db-host "$$DB_HOST"
test "$$(git -C /workspace/moodle rev-parse HEAD)" = "acfa383c13dd46c83ca82894a8e95fac273fda33"
moodle-plugin-ci phplint
moodle-plugin-ci phpcs --max-warnings 0
moodle-plugin-ci phpdoc --max-warnings 0
moodle-plugin-ci validate
moodle-plugin-ci savepoints
moodle-plugin-ci phpunit --fail-on-warning
services: services:
postgres: postgres:
image: postgres:16.13-alpine3.22@sha256:caf536ebd910e85473a9f5e2fd1aea360c965c4a911c8555ac1f61b2102006cb image: postgres:16.13-alpine3.22@sha256:caf536ebd910e85473a9f5e2fd1aea360c965c4a911c8555ac1f61b2102006cb
@@ -12,10 +34,22 @@ services:
tmpfs: tmpfs:
- /var/lib/postgresql/data - /var/lib/postgresql/data
mysql:
profiles:
- mysql
image: mysql:8.4.11@sha256:b3b90af2a6552ae30c266fdb7d5dd55f3afb72404bb78d37fe8a23eb857fd3fb
environment:
MYSQL_ROOT_PASSWORD: moodle_ci
healthcheck:
test: ["CMD-SHELL", "mysql --protocol=TCP --host=127.0.0.1 --user=root --password=$$MYSQL_ROOT_PASSWORD --execute='SELECT 1' --silent"]
interval: 2s
timeout: 5s
retries: 30
tmpfs:
- /var/lib/mysql
ci: ci:
build: <<: *ci
context: .
dockerfile: .docker/ci/Dockerfile
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy
@@ -25,20 +59,18 @@ services:
DB_USER: postgres DB_USER: postgres
MOODLE_BRANCH: v5.2.2 MOODLE_BRANCH: v5.2.2
NPM_CONFIG_FETCH_RETRIES: 5 NPM_CONFIG_FETCH_RETRIES: 5
command:
- /bin/bash ci-mysql:
- -lc <<: *ci
- | profiles:
set -euo pipefail - mysql
php --version depends_on:
composer --version mysql:
node --version condition: service_healthy
moodle-plugin-ci --version environment:
moodle-plugin-ci install --plugin /plugin --branch v5.2.2 --db-host postgres DB: mysqli
test "$$(git -C /workspace/moodle rev-parse HEAD)" = "acfa383c13dd46c83ca82894a8e95fac273fda33" DB_HOST: mysql
moodle-plugin-ci phplint DB_PASS: moodle_ci
moodle-plugin-ci phpcs --max-warnings 0 DB_USER: root
moodle-plugin-ci phpdoc --max-warnings 0 MOODLE_BRANCH: v5.2.2
moodle-plugin-ci validate NPM_CONFIG_FETCH_RETRIES: 5
moodle-plugin-ci savepoints
moodle-plugin-ci phpunit --fail-on-warning